Error-Objekt - Fehlernummer
Überprüfen der Fehlernummer
Bei der Überprüfung von Fehlernummern sollte in jedem Fall vermieden werden, logische Funktionen anzuwenden.
Folgendes Beispiel funktioniert:
Sub DivideByZero() Dim i As Integer On Error Resume Next i = 8 / 0 If Err.Number Then MsgBox "Es trat ein Fehler auf: " & Err.Description End If End Sub
Demzufolge sollte man annehmen, dass folgendes Beispiel ebenfalls funktioniert:
Sub DivideByZero() Dim i As Integer On Error Resume Next i = 8 / 0 If Not Err.Number Then MsgBox "Es trat kein Fehler auf!" End If End Sub
In diesem zweiten Beispiel wird die Meldung "Es trat kein Fehler auf!" auch dann angezeigt, wenn es zu einem Fehler kommt.
Für die Not Funktion der If-Anweisung ist nur 0 = False und –1 = True. Das heißt, dass in einer If-Anweisung eine 0 stets als False und ein Wert ungleich 0 stets als True gewertet werden.
Der Wert Err.Number in dem Beispiel besitzt den Wert 11 („Division durch Null“); dieser Wert ist ungleich 0 und führt demnach in der If Not-Anweisung zu True!!!
Fazit: Man sollte grundsätzlich auf den Wert (bzw. auf 0) prüfen und nicht mit logischen Funktionen die Fehlersituation überprüfen!