ich habe mir ein nettes Makro geschrieben, mit dessen Hilfe ich in einer Datenbank nach Artikelnnummern suchen kann. Ist diese im Artikelstamm gefunden kopiert er aus den Stammdaten die beiden Felder links der Artikelnummer in eine extra Liste.
Funktioniert sehr gut, bin richtig stolz drauf *grins*
Jetzt habe ich nur das Problem, dass ich einen
-„Runtime Error '91“ Object variable or With block variable not set-
Fehler bekomme, sobald eine gesuchte Artikelnummer nicht im Artikelstamm ist.
Kennt jemand von Euch eine Möglichkeit diesen Fehler abzufangen, sodass das Makro einfach mit der nächsten Nummer weitermacht und diese frei läßt?
Ist hier vielleicht etwas schwer zu beschreiben, ich kann das File auch gerne per Mail versenden, wenn mal jemand reinschauen möchte. Ist kein Geheimnis.
select case err.Number
case 91
’
’ hier anweisungen fuer erneutes lesen
’
’
’ ruecksprung in Prozedur mit goto… nicht elegant aber wirksam
case else
MsgBox err.Decsription & " " & err.number
resume ExitHere
end select
end Function
so in etwa
Tschau
Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
bedeutet natürloch, dass alle auffangbaren Fehler meldungslos geschluckt werden. Das kann sinnvoll sein, wenn die Funktion oder Prozedur nicht komplex genug ist, dass andere Fehler auftreten können. Ansonsten aber verbaut man sich damit die Möglichkeit, differenziert auf Fehler zu reagieren - und sie (in der Entwicklungsphase) überhaupt ermitteln zu können.
Sinnvoller ist m.E.
On Error Goto ERROR_HANDLING
zu schreiben und dann etwas in dieser Art zu bosseln :
Sub Haumichplatt()
Dim dieses und jenes
On Error GoTo ERROR_HANDLING
[Codecodetrallala]
Exit Sub
ERROR_HANDLING :
If Err.Number=91 Then 'das war die originale Fehlernummer
Resume Next
End If
MsgBox Err.Description+VbNewLine+VbNewLine+ _
Str$(Err.Number)
Resume Next
End Sub
Damit werden alle anderen Fehler weiterhin mit Nummer und Beschreibung angezeigt.
Jaja, das ist ja auch alles richtig was Du sagst, aber er wollte ja, das der Fehler übersprungen wird, sofern das Gesuchte nicht gefunden wurde. Ich behaupte mal, er durchsucht seine Liste mit einer Schleife und wenn die dann irgendwann zuende ist, aber nichts gefunden wurde, kann er ja 'ne Meldung anzeigen.
Ich halte es für besser, mögliche Fehler in einer Schleife zu überspringen.