Fehler 9

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    hallo,
    in excel 2007 habe ich neulich die find-methode ausprobiert.
    der code auf, den ich mich beziehe, steckt in einer userform (mit combobox, ok- und abbruch-button), und zwar im okbutton_click-event:

    private sub okbutton_click()
    ...
    dim tc as range
    ...
    on error goto err
    with worksheets(1).range("A:A")
    set tc = .cells.find(what:=urcc, after:=.cells(3,1), lookin:=xlvalue, lookat:=xlwhole, searchorder:=xlbyrows, searchdirection:=xlnext, searchformat:=false)
    end with
    ...
    err:
    msgbox("fehler in ok-sub " & err.number & " " & err.description)
    ...
    end Sub

    es wird fehler nummer 9 ausgegeben, der laut microsoft darauf hinweisen soll, dass ein index (in zusammenhang mit einem array oder einer collection) ausserhalb des zulässigen bereichs liegt.

    Könnte das jemand näher erklären? Was mache ich falsch?
    tja, da ich nicht fähig war, den Fehler aufzuspüren, hab' ich das problem jetzt mit
    on error resume next (statt on error goto err)
    erschlagen.

    Dasselbe bei der Funktion:

    public function cC (byval ip as variant) as variant
    ...
    else
    ...
    p1 = "[a-zA-Z]" 'very simple regex-pattern, das irgendeinen (ersten) buchstaben in einer unbekannten zeichenfolge aufspüren soll
    dim rx as regexp
    dim mtCol as matchcollection
    dim mt as match
    set rx = new regexp
    with
    ... 'einstellungen des regexp-objekts
    end with
    on error resume next
    set mtCol = rx.execute(ip)
    ...
    set mt = mtCol.item(0)
    ...
    end function

    die ursprüngliche fehlerbehandlung in der funktion mit "on error goto err" gab "Fehler 0" aus, der in der microsoft fehlerbeschreibung noch nicht einmal zu existieren scheint ...
    Du benötigst überhaupt keine Fehlerbehandlung, wenn du das Ergebnis sauber auswertest.

    Visual Basic-Quellcode

    1. Set tc = .Cells.Find(What:=urcc, After:=.cells(3,1), LookIn:=xlValue, LookAt:=xlWhole)
    2. If tc is Nothing Then
    3. ' not found
    4. Else
    5. ' found
    6. End If
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --