Syntax-Fehler, logische Fehler, Laufzeitfehler, Datentyp-Probleme

Von: Lorenz Hölscher
Stand: 11. April 2011
Beitrag bewerten
Anmelden um Kommentare zu schreiben

Fehler-Hierarchie

Wenn die Fehlerbehandlung in einer Prozedur eingeschaltet ist, bleibt sie das auch für untergeordnete, aufgerufene Prozeduren. Da dort eventuell keine fehlerbehandelnde Methode vorgesehen ist, kann dies zu unangenehmen Überraschungen führen.

Es gibt noch genug Überraschungen, wenn die Fehlerbehandlung selber ganz einfach ist. VBA leitet die Fehlerbehandlung nämlich notfalls an übergeordnete Prozeduren weiter, obwohl in der aktuellen Prozedur gar keine Fehlerbehandlung stattfinden soll, wie im folgenden Code zu sehen ist:

Sub GanzOben()
    On Error GoTo Mist

    InDerMitteA
    InDerMitteB
    Exit Sub

Mist:
    MsgBox "Ein Fehler!"
End Sub

Sub InDerMitteA()
    Unten1
End Sub

Sub InDerMitteB()
    Unten2
End Sub

Sub Unten1()
    Dim i1 As Integer

    i1 = 99
End Sub

Sub Unten2()
    Dim i2 As Integer

    'Laufzeitfehler!
    i2 = 123456
End Sub

Wenn Sie nun GanzOben mit <F5> ausführen, gibt es in Unten2 einen Laufzeitfehler wegen des Überlaufs einer Integer-Variablen.

Da Sie in GanzOben die eigene Fehlerbehandlung eingeschaltet hatten, ist dies in Unten2 noch aktiv. Dort gibt es jedoch keine On Error-Anweisungen, also springt der Code zurück in InDerMitteB. Auch dort fehlt die Fehlerbehandlung, daher springt VBA erneut zurück in dessen aufrufende Prozedur GanzOben.

Dort können Sie den Fehler aber gar nicht behandeln, denn dort ist er ja gar nicht aufgetreten. Schon gar nicht können Sie mit einer Resume-Anweisung in die fehlerhafte Zeile zurückspringen, weil diese in einer anderen Prozedur enthalten ist.

Sie können sich jetzt sicher ungefähr vorstellen, wie schwierig es wird, einen solchen Fehler über mehrere Prozeduren hinweg wirklich zu behandeln.

Dies ist eine Leseprobe

Möchten Sie den Beitrag komplett lesen? Dann werden Sie Probemitglied und testen Sie akademie.de 14 Tage kostenlos!

Auf VBA: Fehler und Fehlerbehandlung erfahren Sie mehr über diesen Beitrag und die weiteren Leseproben.

Weitere Informationen finden Sie auf unserer Infoseite zur Mitgliedschaft und in unseren AGB.

Ich bin bereits Mitglied
Jetzt Probemitglied werden
Ich kann in den 14 Tagen Probezeit formlos z.B. per E-Mail stornieren. Wenn ich das nicht tue, entscheide ich mich für ein