Visual Basic for Applications:
Fehlerbehandlung
Wie:
In VBA wird die Fehlerbehandlung typischerweise mit der Anweisung On Error
implementiert, die VBA anweist, wie weiter verfahren wird, wenn ein Fehler auftritt. Die gängigsten Strategien für die Fehlerbehandlung beinhalten das On Error GoTo
-Label, On Error Resume Next
und On Error GoTo 0
.
Beispiel 1: Verwendung von On Error GoTo
Dieser Ansatz ermöglicht es Ihnen, das Programm zu einem spezifischen Abschnitt des Codes zu leiten, der unmittelbar nach dem Auftreten eines Fehlers markiert wird.
Sub ErrorHandlerExample()
On Error GoTo ErrHandler
Dim intDivision As Integer
intDivision = 5 / 0 ' Dies wird einen Teilen-durch-Null-Fehler verursachen
Exit Sub
ErrHandler:
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description, vbCritical, "Fehler!"
Resume Next
End Sub
In diesem Beispiel wird jeder Laufzeitfehler den Sprung zu ErrHandler
auslösen, wobei eine Fehlermeldung angezeigt und dann mit der nächsten Zeile nach dem Fehler fortgefahren wird.
Beispiel 2: Verwendung von On Error Resume Next
Diese Strategie weist VBA an, mit der Ausführung der nächsten Zeile des Codes fortzufahren, auch wenn ein Fehler auftritt, was nützlich sein kann für Fehler, die als harmlos angesehen werden oder wenn Sie planen, den Fehler später in der Ausführung zu behandeln.
Sub ResumeNextExample()
On Error Resume Next
Dim intDivision As Integer
intDivision = 5 / 0 ' Dies wird das Programm nicht stoppen; Fehler wird ignoriert
' Prüfen, ob ein Fehler aufgetreten ist
If Err.Number <> 0 Then
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description, vbExclamation, "Behandelter Fehler"
' Fehler zurücksetzen
Err.Clear
End If
End Sub
In diesem Fall bricht das Programm bei einem Fehler nicht ab; es prüft, ob ein Fehler aufgetreten ist, behandelt ihn, falls ja, und löscht dann den Fehler.
Vertiefung
Historisch gesehen hat sich die Fehlerbehandlung in Programmiersprachen von einfachen Goto-Anweisungen zu ausgefeilteren Mechanismen wie Ausnahmen in Sprachen wie Java und C# entwickelt. Die Fehlerbehandlung in VBA ist zwar nicht so leistungsfähig oder flexibel wie moderne Ausnahmebehandlungen, erfüllt jedoch ihren Zweck im Kontext der Anwendung der Sprache zur Automatisierung von Aufgaben in Microsoft Office-Umgebungen.
Die primäre Einschränkung der Fehlerbehandlung in VBA liegt in ihrem etwas umständlichen und manuellen Ansatz, der eine sorgfältige Platzierung des Fehlerbehandlungscodes und ein klares Verständnis des Ausführungsflusses erfordert. Moderne Programmiersprachen bieten in der Regel elegantere Lösungen, wie Try-Catch-Blöcke, die den Fluss automatisch zum Fehlerbehandlungscode lenken, ohne dass manuelle Prüfungen oder Sprünge in der Codeausführung erforderlich sind.
Trotz dieser Einschränkungen sind die Fehlerbehandlungsmechanismen von VBA für die meisten Automatisierungsaufgaben geeignet und können, wenn richtig eingesetzt, die Wahrscheinlichkeit von nicht behandelten Fehlern, die Probleme für Benutzer verursachen, erheblich verringern. Darüber hinaus kann das Verständnis der Fehlerbehandlung in VBA Einblicke in ältere Programmierparadigmen und die Entwicklung von Fehlerbehandlungsstrategien in der Softwareentwicklung bieten.