Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

VBA-Begriff: On Error-Anweisung (Beispiel)

In diesem Beispiel wird zuerst die On Error GoTo-Anweisung verwendet, um die Position einer Fehlerbehandlungsroutine in einer Prozedur anzuzeigen. Im Beispiel wird bei dem Versuch, eine geöffnete Datei zu löschen, der Fehler mit der Nummer 55 ausgelöst. Der Fehler wird in der Fehlerbehandlungsroutine bearbeitet, und die Ausführung wird anschließend mit der Anweisung fortgesetzt, die den Fehler verursacht hat. Die On Error GoTo 0-Anweisung deaktiviert die Fehlerbehandlung. Dann wird die On Error Resume Next-Anweisung verwendet, um die Fehlerbehandlung zurückzustellen, damit der Kontext für den von der nächsten Anweisung ausgelösten Fehler mit Sicherheit bestimmt werden kann. Err.Clear wird verwendet, um die Eigenschaften des Err-Objekts zurückzusetzen, nachdem der Fehler bearbeitet wurde.

Sub OnErrorAnweisungDemo()
    On Error GoTo ErrorHandler    ' Fehlerbehandlung aktivieren.
    Open "DATEI1" For Output As #1    ' Datei für Ausgabe öffnen.
    Kill "DATEI1"    ' Versuch, geöffnete Datei zu
                ' löschen.
    On Error Goto 0    ' Fehlerbehandlung aus.
    On Error Resume Next    ' Fehlerbehandlung
                ' zurückstellen.
    ObjectRef = GetObject("Word1.Basic")    ' Nicht existierendes Objekt
                ' starten 
'Auf mögliche Automatisierungsfehler überprüfen.
    If Err.Number = 440 Or Err.Number = 432 Then prüfen.
        ' Erklärung für Benutzer ausgeben und anschließend Err-Objekt
        ' zurücksetzen.
        Mldg = "Fehler beim Versuch, das Automatisierungsobjekt zu öffnen!"
        MsgBox Mldg, , "Test für Zurückstellung von Fehlern"
        Err.Clear    ' Felder des Err-Objekts
                ' zurücksetzen 
    End If    
Exit Sub        ' Vor Fehlerbehandlung beenden.
ErrorHandler:    ' Fehlerbehandlungsroutine.
    Select Case Err.Number    ' Fehlernummer auswerten.
        Case 55    ' Fehler "Datei bereits
                ' geöffnet".
            Close #1    ' Geöffnete Datei schließen.
        Case Else
            ' Andere Fälle hier bearbeiten... 
    End Select
    Resume    ' Ausführung in der Zeile 
                ' fortsetzen, die den Fehler
End Sub        ' ausgelöst hat.