VBA On Error Resume Weiter - Beispiele für VBA On Error Resume Next

Inhaltsverzeichnis:

Anonim

Excel VBA On Error Resume Weiter

Die Fehlerbehandlung ist ein sehr nützlicher und wichtiger Mechanismus für die Programmierung von Sprachen wie VBA-Fehlerkontrolle oder -verhütung. Dies ist ein Aspekt der Fehlerbehandlung, bei der wirksame und wichtige Maßnahmen in einem VBA-Skript ergriffen werden, um das Auftreten von Fehlermeldungen zu vermeiden. Die Excel VBA-Anweisung On Error Resume Next ignoriert die Codezeile, die einen Fehler verursacht, und setzt die Ausführung fort oder leitet sie zur nächsten Zeile weiter, die auf die Zeile folgt, die den Fehler verursacht hat.

ANMERKUNG: Bei der Anweisung "Error Resume Next" werden die Laufzeitfehler nicht behoben, sondern es wird ignoriert, wo die Ausführung des VB-Programms in der Zeile fortgesetzt wird, die den Laufzeitfehler verursacht hat.

Grundsätzlich wird On error resume next verwendet, wenn Sie den Fehler ignorieren und fortfahren oder die Codeausführung in der nächsten Zelle fortsetzen möchten.

Arten von Fehlern in VBA

Nachfolgend sind die verschiedenen Arten von Fehlern in VBA aufgeführt:

  1. Syntaxfehler oder Parsing-Fehler.
  2. Kompilierungs- oder Kompilierungsfehler.
  3. Laufzeit Fehler.
  4. Logischer Fehler.

Die obigen Fehler können mit Hilfe von Debugging- und 'On Error'-Anweisungen in einem Code behoben werden. Der Laufzeitfehler kann mit Hilfe von On Error Resume Next verhindert werden.

VBA-Laufzeitfehler:

Vor der Erläuterung von On Error Resume Next sollten Sie Laufzeitfehler kennen, wenn in einer Anweisung unmögliche mathematische Anweisungen oder Ausdrücke vorhanden sind. Dann tritt dieser Laufzeitfehler auf.

Beispiele für Excel VBA On Error Resume Next

Im Folgenden sind die verschiedenen Beispiele für On Error Resume Next in Excel VBA aufgeführt:

Sie können diese VBA-On-Error-Resume-Next-Excel-Vorlage hier herunterladen - VBA-On-Error-Resume-Next-Excel-Vorlage

VBA On Error Resume Next - Beispiel # 1

Hier wird ein Fehler ignoriert und die Ausführung des Codes wird fortgesetzt. Im folgenden Beispiel kann 6 nicht durch Null geteilt werden. Wenn Sie es ausführen, ohne die Anweisung On Error Resume Next einzugeben, tritt der folgende Laufzeitfehler auf.

Code:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Wenn On Error Resume Next in am oberen Rand des Codes nach der SUB-Anweisung eingegeben wird, ignoriert es Laufzeitfehler und fährt mit der nächsten Anweisung fort. Dies führt zu einer Ausgabe von 6/2 (Popup-Meldungsfeld mit Ergebnis davon).

Code:

 Sub RUNTIME_2 () On Error Resume Next MsgBox 6/0 MsgBox 6/2 End Sub 

VBA On Error Resume Next - Beispiel 2

Ich kann On Error Resume Next überall im Code vom Anfang bis zum Ende verwenden. Im folgenden Beispiel muss ich eine 3-Berechnung durchführen, d.h.

9/3 =?

9/0 =?

9/2 =?

Im oben genannten Beispiel können Sie eine zweite Berechnung beobachten, bei der eine Zahl nicht durch Null geteilt werden kann, dh 9 kann im zweiten Schritt nicht durch Null geteilt werden. Angenommen, Sie führen das Makro aus, ohne die Anweisung On Error Resume Next einzugeben. Jetzt kann ich den Code Schritt für Schritt mit Hilfe von step in oder F8 ausführen, um zu verstehen, wie es funktioniert.

Jetzt führe ich den obigen Code aus, indem ich Schritt für Schritt häufig auf die Option Into oder die Taste F8 klicke. Ich kopiere einfach den obigen Code und fange an, ihn Schritt für Schritt auszuführen. Der erste Schritt der Berechnungsmeldung 3 wird angezeigt.

Code:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Wenn ich die zweite Codezeile ausführe, tritt der unten erwähnte Laufzeitfehler im zweiten Schritt eines Codes auf, bei dem eine Zahl nicht durch Null geteilt werden kann, dh 9 kann im zweiten Schritt nicht durch Null geteilt werden.

Code:

 Sub RUNTIME_3 () MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Wenn ich jetzt noch auf Debug klicke, kann ich nicht mehr weitermachen. Dann komme ich zur zweiten Codezeile (sie wird gelb hervorgehoben), in der ich die Korrektur durchführen muss. Wenn Sie hier weiter auf die Option Step Into oder die Taste F8 klicken, wird die dritte Berechnung in diesem Code nicht ausgeführt.

Um diesen Laufzeitfehler zu beheben oder zu behandeln, muss die OnError Resume Next- Anweisung über einem zweiten Code oder am Anfang des Codes unter der Unteranweisung verwendet oder ausgeführt werden. Damit wird diese Codezeile übersprungen und mit dem dritten Codeschritt fortgefahren, um den Wert zu berechnen.

Code:

 Sub RUNTIME_30 () MsgBox 9/3 On Error Resume Weiter MsgBox 9/0 MsgBox 9/2 End Sub 

ODER

 Sub RUNTIME_31 () On Error Resume Next MsgBox 9/3 MsgBox 9/0 MsgBox 9/2 End Sub 

Jetzt habe ich bei Fehler die nächste Anweisung zum Code hinzugefügt, wo Sie einen der obigen Codes verwenden können. Wenn Sie ihn Schritt für Schritt ausführen, erhalten Sie ein Popup mit zwei Meldungen, wobei einer der erste Code und der dritte Code der Ausgabe ist Berechnung. On Error Resume Next ignoriert den Laufzeitfehler im zweiten Code und wechselt zum dritten Code.

VBA On Error Resume Next - Beispiel 2

Es wird nun die Kombination von On Error Resume Next mit Error GoTo 0 angezeigt. Im folgenden Code werden Fehler ignoriert, bis die On Error GoTo 0- Anweisung erreicht ist. Nach der Anweisung On Error GoTo 0 kehrt der Code zurück oder fährt mit der normalen Fehlerprüfung fort und löst den erwarteten Fehler aus.

Code:

 Sub onError_Go_to_0_with_Resume_next () On Error Resume Next Beenden Sie "C: TempFile.exe" On Error GoTo 0 Range ("A1"). Value = 100 / "PETER" End Sub 

Wenn ich den obigen Code ausführe, wird der Teilungsfehler angezeigt, dh Typenkonflikt (numerischer Wert kann nicht durch Text geteilt werden).

Jetzt können Sie Ihre Arbeitsmappe als "Excel-Makro-fähige Arbeitsmappe" speichern. Klicken Sie auf Speichern unter in der linken Ecke des Arbeitsblatts.

Wenn Sie diese Excel-Datei erneut öffnen, können Sie die folgende Tastenkombination verwenden, z

Mit der Tastenkombination Funktion + Alt + F11 können Sie auf den gesamten erstellten Makrocode der Arbeitsmappe zugreifen. Mit der Tastenkombination Funktion + Alt + F8 können Sie ein Dialogfeld „Makro“ öffnen, das alle Makronamen enthält und in dem Sie einen bestimmten Makrocode Ihrer Wahl ausführen können.

Dinge, an die man sich erinnern sollte

  • Laufzeitfehler werden unbeaufsichtigt abgefangen und im globalen Err-Objekt gespeichert
  • On Error Resume Next verhindert normalerweise eine Unterbrechung der Codeausführung.
  • Fehlerobjekteigenschaften (Err Object) werden automatisch gelöscht, wenn Resume Next in einer Fehlerbehandlungsroutine verwendet wird

Empfohlene Artikel

Dies ist eine Anleitung zu VBA On Error Resume Next. Hier diskutieren wir verschiedene Arten von Fehlern in VBA Excel zusammen mit einigen praktischen Beispielen und einer herunterladbaren Excel-Vorlage. Sie können auch unsere anderen Artikelvorschläge durchgehen -

  1. Vollständiger Leitfaden zu VBA-Makros
  2. VBA DateDiff (Beispiele mit Excel-Vorlage)
  3. Wie verwende ich Goal Seek in VBA?
  4. VBA Protect Sheet mit Syntax
  5. VBA Environ