VBA bei Fehler Gehe zu 0

Excel VBA bei Fehler Gehe zu 0

VBA On Error GoTo 0 ist eine Fehlerbehandlungsanweisung, mit der der aktivierte Fehlerbehandler in der Prozedur deaktiviert wird. Es wird als "Error Handler Disabler" bezeichnet.

Die Fehlerbehandlung in einer der Programmiersprachen ist eine Meisterklasse, die alle Codierer verstehen müssen. VBA-Programmiersprache und wir haben auch Fehlerbehandlungstechniken in dieser Programmiersprache. "On Error Resume Next" aktiviert die Fehlerbehandlungsroutine und "On Error GoTo 0" deaktiviert die aktivierte Fehlerbehandlungsroutine.

Sowohl "On Error Resume Next" als auch "On Error GoTo 0" sind Paare, die für die Effizienz des Codes zusammen verwendet werden müssen. Um Fehler zu behandeln, müssen wir mit der Anweisung "On Error Resume Next" beginnen und um diese Fehlerbehandlungsroutine zu beenden, müssen wir die Anweisung "On Error GoTo 0" verwenden.

Jeder zwischen diesen Anweisungen geschriebene Zeilencode ignoriert alle Fehler, die im Verfahren aufgetreten sind.

Wie verwende ich die On Goal GoTo 0-Anweisung?

Sie können diese VBA On Error Goto 0 Excel-Vorlage hier herunterladen - VBA On Error Goto 0 Excel-Vorlage

Ein Beispiel finden Sie im folgenden Code.

Code:

 Sub On_ErrorExample1 () Arbeitsblätter ("Sheet1"). Bereich auswählen ("A1"). Wert = 100 Arbeitsblätter ("Sheet2"). Bereich auswählen ("A1"). Wert = 100 End Sub 

Der obige Code wählt zuerst das Arbeitsblatt mit dem Namen "Sheet1" aus und fügt in Zelle A1 den Wert 100 ein.

Code:

Arbeitsblätter ("Sheet1"). Bereich auswählen ("A1"). Wert = 100

Anschließend wird das Arbeitsblatt mit dem Namen "Sheet2" ausgewählt und derselbe Wert eingefügt.

Code:

Arbeitsblätter ("Sheet2"). Bereich auswählen ("A1"). Wert = 100

Jetzt habe ich unten Blätter in meiner Arbeitsmappe.

Es gibt keine Blätter mit den Namen "Sheet1" und "Sheet2". Wenn wir den Code ausführen, tritt ein Fehler wie der folgende auf.

Da es kein Blatt mit dem Namen "Sheet1" gibt, ist der Fehler "Index außerhalb des Bereichs" aufgetreten. Um diesen Fehler zu behandeln, füge ich oben im Makro eine Fehlerbehandlungsanweisung "On Error Resume Next" hinzu.

Code:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Select Range ("A1"). Value = 100 Worksheets ("Sheet2"). Select Range ("A1"). Value = 100 End Sub 

Führen Sie nun den Code aus und sehen Sie, was passiert.

Es werden keine Fehlermeldungen ausgegeben, da die Fehlerbehandlungsanweisung On Error Resume Next aktiviert ist.

Stellen Sie sich das Szenario vor, in dem wir den Fehler bei Nichtverfügbarkeit des Arbeitsblatts „Sheet1“ ignorieren müssen, aber benachrichtigen müssen, wenn kein Arbeitsblatt mit dem Namen „Sheet2“ vorhanden ist.

Da wir oben On Error Resume Next hinzugefügt haben , hat es begonnen, den Fehler zu behandeln, aber gleichzeitig müssen wir angeben, für wie viele Zeilen wir diesen Fehler ignorieren müssen.

In diesem Beispiel müssen wir nur den Fehler für das erste Arbeitsblatt ignorieren, aber ab dem zweiten Blatt muss der Fehler auftreten, wenn kein Arbeitsblatt „Sheet2“ vorhanden ist. Nachdem der erste Arbeitsblattcode die Fehler-Deaktivierungszeile On Error GoTo 0 hinzugefügt hat.

Code:

 Sub On_ErrorExample1 () On Error Resume Next Worksheets ("Sheet1"). Wählen Sie Range ("A1"). Value = 100 On Error GoTo 0 Worksheets ("Sheet2"). Wählen Sie Range ("A1"). Value = 100 End Sub 

Führen Sie nun den Code zeilenweise aus, um die Auswirkungen durch Drücken der Taste F8 zu sehen.

Wenn Sie nun die Taste F8 drücken, springt die Codeausführung zur nächsten Zeile und die aktive Zeilenaufgabe wird ausgeführt. Jetzt ist die aktive Zeile (gelbe Linie) die Fehlerbehandlungsroutine "On Error Resume Next" und die Fehlerbehandlungsroutine wird aktiviert.

Wenn ein Fehler auftritt, wird er ignoriert, bis der Fehlerbehandler die Anweisung " On Error GoTo 0 " deaktiviert .

Beim vorherigen Versuch sind Fehler aufgetreten, aber drücken Sie die Taste F8 noch einmal und sehen Sie die Magie.

Ohne Fehler zu machen, wurde die Ausführung des Codes fortgesetzt, obwohl kein Arbeitsblatt „Sheet2“ zur Auswahl steht. Drücken Sie nun erneut F8.

Da es kein Blatt1 gab, kann der Wert in der A1-Zelle nicht als 500 eingefügt werden. Es wird jedoch der Wert 500 in die Zelle A1 eingefügt, je nachdem, welches Arbeitsblatt aktiv ist. Mein aktives Blatt, wenn ich den Code ausführe, war "Sheet3", daher wird der Wert 100 in die Zelle A1 eingefügt.

Jetzt lautet die aktive Codezeile " On Error GoTo 0 ". Durch Drücken der Taste F8 wird diese Zeilenaufgabe ausgeführt.

Seit der Ausführung von "On Error GoTo 0" wurde der Prozess der Fehlerbehandlung gestoppt und es werden erneut Fehler angezeigt, falls solche auftreten. Drücken Sie die Taste F8 und sehen Sie den Fehler.

Im vorherigen Fall ohne On Error GoTo 0 wurde dieser Fehler ebenfalls ignoriert, aber seit wir den Fehlerbehandlungs-Deaktivierer hinzugefügt haben, wird der Fehler erneut angezeigt.

Dinge, an die man sich hier erinnern sollte

  • Sowohl On Error Resume Next als auch On Error GoTo 0 müssen als " Error Handler Enabler " und " Error Handler Disabler " verwendet werden.
  • Jede Codezeile zwischen diesen beiden Anweisungen stößt auf einen Fehler, der ignoriert wird.
  • Wenn die On On Error GoTo 0-Anweisung vorhanden ist, wird nach dem Beenden des Subprozedure-Fehlerbehandlungsprogramms die Deaktivierung deaktiviert.