VBA On Error Statements - Top 3 Möglichkeiten, um mit Fehlern umzugehen

Inhaltsverzeichnis

Excel VBA On Fehlererklärung

Die VBA On Error- Anweisung ist eine Art Fehlerbehandlungsmechanismus, mit dem der Code angewiesen wird, was zu tun ist, wenn ein Fehler auftritt. Wenn ein Code auf einen Fehler stößt, wird die Ausführung im Allgemeinen gestoppt, aber mit dieser Anweisung im Code wird die Ausführung des Fehlers ausgeführt Der Code wird fortgesetzt, da er Anweisungen enthält, die ausgeführt werden müssen, wenn ein Fehler auftritt.

Wenn Sie den Fehler im Code antizipieren, sind Sie ein Profi in der VBA-Codierung. Sie können den Code nicht 100% effizient machen. Selbst wenn Sie sich auf die eine oder andere Weise sicher sind, kann dies zu einem Fehler führen.

Es ist fast eine unmögliche Aufgabe, jede Art von Fehler zu identifizieren und zu behandeln, aber wir haben verschiedene Möglichkeiten, einen Fehler in VBA zu behandeln. Während Sie den Code schreiben, können Sie möglicherweise nicht vorhersehen, welche Art von Fehlercode auftreten kann. Wenn jedoch ein Fehler auftritt, verbringen Sie mehr Zeit mit dem Debuggen als mit dem Schreiben des Codes selbst.

Was ist ein Fehler?

Ein Fehler ist nichts anderes als eine Codezeile, die aufgrund der Funktionalität oder des falschen Codes nicht ausgeführt werden kann. Versuchen Sie also, den Fehler zu antizipieren und zu behandeln.

Wenn Sie beispielsweise versuchen, das nicht vorhandene Blatt zu löschen, können wir diese Codezeile offensichtlich nicht ausführen.

Es gibt drei Arten von Fehlern: Ein Fehler wird aufgrund nicht deklarierter Variablen kompiliert. Der zweite ist ein Dateneingabefehler aufgrund falscher Eingaben des Codierers, und der dritte ist ein Laufzeitfehler aufgrund von VBA, der die Codezeile nicht erkennen kann. Für den Versuch, auf ein Arbeitsblatt oder eine Arbeitsmappe zuzugreifen oder daran zu arbeiten, die nicht vorhanden sind.

Wir haben jedoch eine Anweisung in VBA, um alle diese Arten von Fehlern zu behandeln, dh die Anweisung "On Error".

Arten von On-Fehleranweisungen

Der wichtigste Punkt bei der Behandlung von Fehlern in VBA ist die Anweisung "On Error". Beispiel: Bei Fehler "Nächste Zeile fortsetzen", "Zu einer anderen Zeile gehen oder zu einer anderen Zeile springen" usw. …

Die On-Error-Anweisung enthält drei Arten von Anweisungen.

  1. GoTo 0 bedeutet, dass Excel oder VBA immer dann, wenn der Laufzeitfehler auftritt, das Fehlermeldungsfeld anzeigen sollte, in dem die Art des aufgetretenen Fehlers angegeben ist. Sobald VBA den Code ausführt, werden alle Fehlerbehandlungsroutinen in diesem bestimmten Block des Codes deaktiviert.
  2. Als nächstes fortsetzen bedeutet, dass diese Anweisung den Excel anweist, diesen Fehler zu ignorieren und mit der nächsten Codezeile fortzufahren, ohne Fehlermeldungen anzuzeigen. Dies bedeutet nicht, dass der Fehler behoben wird. Vielmehr wird der Fehler einfach ignoriert.
  3. GoTo (Label) bedeutet, dass Sie immer dann, wenn VBA auf einen Fehler stößt, zum zugewiesenen Label wechseln. Dadurch springt der Code zu der vom Codierer bereitgestellten Zeile.

Top 3 Möglichkeiten zur Behandlung von Fehlern in VBA

# 1 - On Error Resume Next

Angenommen, Sie teilen den Wert 20 durch 0 und haben die Variable deklariert, um ihr das Ergebnis der Division zuzuweisen.

Code:

Sub OnError_Example1 () Dim i As Integer i = 20/0 End Sub

Wenn Sie diesen Code ausführen, wird der folgende Fehler ausgegeben.

Sie können also keine Zahl durch den Wert Null teilen. Die Laufzeitfehlernummer ist 11, dh Division durch Null.

Jetzt werde ich dem Code eine weitere Zeile hinzufügen.

Code:

Sub OnError_Example1 () Dim i als Ganzzahl, j als Ganzzahl i = 20/0 j = 20/2 End Sub

Jetzt werde ich die Anweisung On error resume als nächstes oben hinzufügen.

Code:

Sub OnError_Example1 () Dim i als Ganzzahl, j als Ganzzahl bei Fehler Fortsetzen Weiter i = 20/0 j = 20/2 End Sub

Wenn ich diesen Code jetzt ausführe, werden mir keine Fehlermeldungen angezeigt. Vielmehr wird die nächste Codezeile ausgeführt, dh j = 20/2.

# 2 - Bei Fehler GoTo Label

Ich habe drei Variablen deklariert.

Code:

Sub OnError_Example1 () Dim i als Ganzzahl, j als Ganzzahl, k als Ganzzahl

Für all diese drei Variablen werde ich eine Divisionsberechnung zuweisen.

Code:

Sub OnError_Example1 () Dim i als Ganzzahl, j als Ganzzahl, k als Ganzzahl i = 20/0 j = 20/2 k = 10/5

Das Ergebnis all dieser drei Berechnungen wird im Meldungsfeld angezeigt.

Code:

Sub OnError_Example1 () Dim i als Ganzzahl, j als Ganzzahl, k als Ganzzahl i = 20/0 j = 20/2 k = 10/5 MsgBox "Der Wert von i ist" & i & vbNewLine & "Der Wert von j ist "& j & _ vbNewLine &" Der Wert von k ist "& k & vbNewLine End Sub

Jetzt werde ich versuchen, diesen Code auszuführen, da die Berechnung von "I" nicht korrekt ist. Wir erhalten Laufzeitfehler 11.

Jetzt werde ich die Anweisung "On Error Resume Next" hinzufügen.

Code:

Sub OnError_Example1() Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20 / 0 j = 20 / 2 k = 10 / 5 MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _ vbNewLine & "The value of k is " & k & vbNewLine End Sub

If I execute this, it will skip the “I” calculation and execute the remaining two calculations, and the result is as follows.

Now instead of “On Error Resume Next,” I will add “On Error GoTo KCalculation.”

Code:

Sub OnError_Example1() Dim i As Integer, j As Integer, k As Integer On Error GoTo KCalculation: i = 20 / 0 j = 20 / 2 KCalculation: k = 10 / 5 MsgBox "The value of i is " & i & vbNewLine & "The value of j is " & j & _ vbNewLine & "The value of k is " & k & vbNewLine End Sub
Hinweis: Hier ist „KCalculation“ der Markenname, den ich angegeben habe. Sie können Ihren eigenen Markennamen ohne Leerzeichen angeben.

Wenn ich diese Codezeile jetzt ausführe, springt sie nicht zur nächsten Zeile. Vielmehr springt es zu dem von mir eingegebenen Markennamen, dh "KCalcualtion". Hier wird der durch "I" angegebene Fehler ignoriert und es wird auch keine "j" -Berechnung ausgeführt, sondern es wird sofort zu "KCalcualtion" gesprungen.

# 3 - Druckernummer in VBA drucken

Am Ende des Codes können wir die Fehlernummer auch in einem separaten Meldungsfeld ausdrucken. Die folgende Codezeile erledigt diesen Job.

Code:

Err.Number

Jetzt werde ich diesen Code ausführen. Das erste Meldungsfeld zeigt die Berechnungsergebnisse an.

Klicken Sie auf OK. Es wird ein weiteres Meldungsfeld angezeigt, in dem die Fehlernummer angezeigt wird.

Wir gehen 11; als Ergebnis, dh Division durch Null.

Wir können auch die Fehlerbeschreibung anstelle der Nummer erhalten. Wir müssen nur den Code ändern. Unten ist der Code.

Code:

Err.Beschreibung

Es wird eine Beschreibung wie diese angezeigt.

Dinge, an die man sich erinnern sollte

  • Vergessen Sie nach der Eingabe von "On Error Resume Next" am Ende des Codes nicht, die Anweisung "On Error GoTo 0" hinzuzufügen.
  • Der Markenname sollte an beiden Stellen gleich sein.
  • Markennamen müssen nicht rechtzeitig definiert werden.
  • Sehen Sie am Ende immer über das separate Meldungsfeld nach, welcher Fehler aufgetreten ist.

Interessante Beiträge...