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!!!

HinweisFazit: Man sollte grundsätzlich auf den Wert (bzw. auf 0) prüfen und nicht mit logischen Funktionen die Fehlersituation überprüfen!