VBA bei Fehler GoTo - Arten von On-Fehleranweisungen in VBA

Inhaltsverzeichnis

Excel VBA bei Fehler GoTo

Fehler sind Bestandteil jeder Codierungssprache, und VBA-Makros unterscheiden sich nicht davon. Meiner Meinung nach machen 90% der geleisteten Arbeit aus, warum der Fehler auftritt, und 10% liegen in der Behebung dieses Fehlers. In jeder Codierungssprache verwenden Codierer ihre eigene Methode, um Fehler in ihrer Codierung zu behandeln. Dies gilt auch für die VBA-Codierung. Oft müssen wir den Fehler ignorieren, oder oft möchten wir zu bestimmten Dingen gehen, wenn der Fehler auftritt. "On Error" ist die Anweisung, die wir in VBA verwenden müssen, um Fehler zu behandeln.

Diese Anweisung hat drei Arten von Anweisungen, und unten ist die Liste.

  1. Bei Fehler Gehe zu 0
  2. Bei Fehler Springen (Beschriftung)
  3. On Error Resume Next

In diesem Artikel werden wir sehen, wie diese drei Anweisungen in der VBA-Codierung verwendet werden, um alle Arten von Fehlern zu behandeln.

Wie verwende ich VBA On Error Statements?

# 1 - On Error Resume Next

Wie die Anweisung selbst sagt, bedeutet "On Error Resume Next", wenn der Fehler im Code "Resume" in der nächsten Zeile des Codes auftritt, indem der Fehlerzeilencode ignoriert wird. Schauen Sie sich nun den folgenden Code an.

Im folgenden Code habe ich die Arbeitsblattnamen erwähnt und gebeten, den Wert in der ersten Zelle als "Fehlertest" einzugeben.

Code:

Sub On_Error_Resume_Next () Arbeitsblätter ("Ws 1"). Bereich auswählen ("A1"). Wert = Arbeitsblätter "Fehlertest" ("Ws 2"). Bereich auswählen ("A1"). Wert = Arbeitsblätter "Fehlertest" ( "Ws 3"). Bereich auswählen ("A1"). Wert = Arbeitsblätter "Fehlertest" ("Ws 4"). Bereich auswählen ("A1"). Wert = "Fehlertest" End Sub

Jetzt habe ich die folgenden Arbeitsblätter in meiner Arbeitsmappe.

  • Ich werde den Code ausführen und sehen, was passiert.
  • Wir haben den Fehler "Index außerhalb des Bereichs" erhalten. Klicken Sie auf "Debuggen", um zu sehen, in welcher Zeile der Fehler aufgetreten ist.
  • In der Zeile "Arbeitsblätter (" Ws 3 "). Auswählen" haben wir also einen Fehler erhalten. Dies liegt daran, dass in unserer Arbeitsmappe kein Arbeitsblatt mit dem Namen "Ws 3" vorhanden ist und daher ein Fehler aufgetreten ist.

In solchen Fällen möchten wir möglicherweise den Fehler ignorieren und die Ausführung des Codes in der nächsten Zeile fortsetzen. Hier kommt unser Fehlerbehandler "On Error Resume Next" ins Spiel.

  • Alles, was wir tun müssen, ist, am Anfang des Makros die Zeile "On Error Resume Next" hinzuzufügen.

Führen Sie nun diesen Code aus, und es wird keine Fehlermeldung angezeigt, da der Fehler bei jedem Auftreten eines Codes ignoriert wird und mit der nächsten Codezeile fortgefahren wird.

# 2 - Bei Fehler Gehe zu 0

Dies ist kein Fehlerbehandler, sondern ein Enabler für Fehlermeldungen, nachdem wir die Fehlermeldung mithilfe der Anweisung "On Error Resume Next" deaktiviert haben.

Wenn Sie die Anweisung "Resume Next" verwenden, ignorieren VBA-Makros alle auftretenden Fehler und fahren mit der nächsten Codezeile fort. Wir möchten jedoch nicht, dass dies die ganze Zeit passiert, da einige Fehler absichtlich ignoriert werden müssen, andere eine Benachrichtigung benötigen.

Wenn ein bestimmter Codesatz einen Fehler in diesem Codeblock auslöst, müssen nur Fehler in anderen Teilen des Codes ignoriert werden. Wir wollen den Fehler nicht ignorieren.

  • In der folgenden Abbildung sehen Sie die Verwendung der Anweisung "On Error GoTo 0".

Daher werden Fehler ignoriert, bis der Code den Fehler-Benachrichtigungs-Enabler "On Error GoTo 0" findet, sobald diese Codezeile die Makros wieder normal ausführt und wie gewohnt Fehlermeldungen ausgibt.

# 3 - Bei Fehler GoTo Label

Wir haben gesehen, wie der Fehler ignoriert und die Fehlerbenachrichtigung wieder aktiviert wird. Mit dieser Methode können wir nun zu einer bestimmten Codezeile wechseln.

Bei dieser Methode bedeutet "Label", dass wir diesem Label einen beliebigen Namen geben können, und dasselbe Label sollte auch in der erforderlichen Codezeile angegeben werden.

Sehen Sie sich beispielsweise denselben Code aus dem obigen Beispiel an.

Führen Sie nun den Code zeilenweise aus, indem Sie die Funktionstaste F8 drücken.

Jetzt liest das Makro die Fehlerbehandlungsanweisung. Drücken Sie die Taste F8, um die ersten 2 Arbeitsblattcodes auszuführen.

Jetzt führt das Makro den dritten Arbeitsblattcode aus, der nicht in der Arbeitsmappe enthalten ist. Drücken Sie die Taste F8 und sehen Sie, was passiert.

Da das Makro in der folgenden Codezeile auf einen Fehler gestoßen ist, ist es zur Fehlerbehandlungsbezeichnung "ErrorMessage" gesprungen, die durch die Anweisung "On Error GoTo (Label)" beschrieben wurde.

Jetzt wird im Meldungsfeld die Meldung "Fehler aufgetreten und Makro verlassen" angezeigt.

Dinge, an die man sich erinnern sollte

  • Vba On Error GoTo 0 aktiviert die Fehlerbenachrichtigung erneut. Vergessen Sie also nicht, diese hinzuzufügen, nachdem Sie einen Fehlerbehandler bereitgestellt haben.
  • Sie müssen absolut sicher sein, in welchem ​​Teil des Codes Sie den Fehler ignorieren möchten. Fügen Sie daher die Fehlerbehandlungsroutine nur für diesen Codeblock bei.

Interessante Beiträge...