VBA On Error GoTo

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 Art, Fehler in ihrer Codierung zu behandeln, ebenso wie wir sie in der VBA-Codierung verwenden. 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 Gehe zu [Etikett]
  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?

Sie können diese GoTo-Anweisungsvorlage für VBA On Error hier herunterladen - GoTo-Anweisungsvorlage für VBA On Error

# 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 unten 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" wurde ein Fehler angezeigt. 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 des Codes ignoriert wird und mit der nächsten Codezeile fortgefahren wird.

# 2 - Bei Fehler Gehe zu 0

Dies ist kein Fehlerbehandler, sondern ein Fehlermeldungen-Enabler, 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 nur in diesem Codeblock einen Fehler auslöst, müssen wir den Fehler anderer Teile des Codes ignorieren, den wir nicht ignorieren möchten.

  • 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 „Etikett“, dass wir diesem Etikett einen beliebigen Namen geben können, und dasselbe Etikett 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 und drückt 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.

Im Meldungsfeld wird nun 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 nach Bereitstellung eines Fehlerbehandlungsprogramms hinzuzufügen.
  • 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.