Excel VBA Fehlerbehandlung

Fehlerbehandlung ist ein sehr nützlicher und wichtiger Mechanismus für Programmiersprachen wie VBA. Die Fehlerkontrolle oder -verhütung ist ein Aspekt der Fehlerbehandlung. Dies bedeutet, dass in einem VBA-Skript wirksame und wichtige Maßnahmen ergriffen werden, um das Auftreten von Popup-Fehlermeldungen zu vermeiden

Verschiedene Arten von Fehlern in VBA

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

Die oben genannten Fehler können mit Hilfe des unten genannten Debugs und verschiedener 'On Error'-Anweisungen, die zwischen einem Code eingefügt werden, behoben werden.

On Error Resume Weiter

Bei Fehler Gehe zu 0

Bei Fehler Gehe zu

Bei Fehler Gehe zu -1

VBA-Fehlerbehandlung mit Hilfe verschiedener 'ON ERROR'-Anweisungen

Sie können diese Excel-Vorlage für VBA-Fehlerbehandlung hier herunterladen - Excel-Vorlage für VBA-Fehlerbehandlung

Beispiel 1 - VBA-Kompilierungsfehler

Wenn eine Anweisung oder Syntax von VBA-Code fehlerhaft ist und Sie einen Code versehentlich falsch eingeben, wird er in Abhängigkeit von den Einstellungsoptionen in den Tools in roter Farbe hervorgehoben (wenn Sie die automatische Syntaxprüfung ausgewählt haben).

Ein Popup-Meldungsfeld mit Kompilierungsfehlern wird angezeigt, wenn Sie den Code mit falscher Syntax ausführen.

Code:

 Sub SYNTAX_ERROR () MsgBox das ist mein erstes Programm End Sub 

"KOMPILIERUNGSFEHLER: VARIABEL NICHT DEFINIERT" ist der häufigste Fehler, der als Popup-Meldung angezeigt wird. Wenn die referenzierende Variable nicht definiert ist, tritt dieser Fehler auf.

Code:

 Sub VBA_FORMAT1 () A = 19049.83 A = Format (A, "STANDARD") MsgBox A End Sub 

Im obigen Beispiel habe ich den Variablentyp nicht als String deklariert, daher tritt dieser Fehler auf. Also muss ich eine Variable als Dim A As String deklarieren .

Code:

 Sub VBA_FORMAT1 () Dim A As String A = 19049.83 A = Format (A, "STANDARD") MsgBox A End Sub 

Beispiel 2 - VBA-Laufzeitfehler

Wenn in einer Anweisung unmögliche mathematische Aussagen oder Terme vorhanden sind, tritt dieser Laufzeitfehler auf.

Code:

 Sub RUNTIME_1 () MsgBox 6/0 End Sub 

Beispiel # 3 - VBA Logische Fehler oder Bugs

Diese Fehler sind sehr schwer zu verfolgen. Sie werden weder hervorgehoben, noch wird eine Popup-Fehlermeldung angezeigt. Dies führt zu unerwarteten Aktionen und falschen Ergebnissen.

Beispiel: Wenn zwei Variablen im Code vorhanden sind, enthält dieser möglicherweise eine falsche. In diesem Fall tritt ein logischer Fehler auf.

Wie vermeide ich Fehler in VBA?

Sehen wir uns an, wie Sie die oben genannten verschiedenen Fehlertypen in VBA Excel verhindern können.

Schritt 1: Öffnen eines VB-Editor-Fensters Wählen Sie Visual Basic in der Gruppe Code auf der Registerkarte Entwickler aus oder klicken Sie darauf, oder klicken Sie direkt auf die Tastenkombination Alt + F11 .

Schritt 2: Um ein leeres Modul zu erstellen, klicken Sie unter den Microsoft Excel-Objekten mit der rechten Maustaste auf Blatt 1 (VB_ERROR HANDLING) & Insert Module (Modul einfügen), damit ein neues leeres Modul erstellt wird.

VBA-Fehlerbehandlung mit Debug-Option

Es ist besser, Code zu kompilieren, bevor wir ihn ausführen. Um der Kompilierung zu folgen, müssen die folgenden Schritte ausgeführt werden. In der VB-Menüleiste müssen wir unter der Debug-Option ein kompiliertes VBA-Projekt auswählen. Wenn Sie darauf klicken, wird der Code Schritt für Schritt überprüft. Sobald der Fehler gefunden wurde, wird er hervorgehoben und eine Popup-Meldung wird angezeigt. Sie müssen ihn daher korrigieren. Sobald es korrigiert ist, müssen Sie kompilieren, um den nächsten Fehler im Code zu finden.

Hinweis: Mit Hilfe der Kompilierungsoption können wir nur den Kompilierungs- und Syntaxfehler beheben.

VBA-Fehlerbehandlung mit Hilfe verschiedener 'ON ERROR'-Anweisungen

1. On Error Resume Next

In diesem Fall wird der Fehler ignoriert und der Code 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 am Anfang des Codes nach der Sub-Anweisung eingegeben wird, ignoriert es Laufzeitfehler und fährt mit der nächsten Anweisung fort, was zur Ausgabe von 6/2, dh 3 (Popup-Meldungsfeld mit Ergebnis davon) führt.

Code:

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

2. Bei Fehler GoTo 0 und Fehler GoTo -1

'On Error GoTo 0' stoppt den Code in der spezifischen Zeile, die den Fehler verursacht, und zeigt ein Meldungsfeld an, das den Fehler beschreibt oder anzeigt.

Code:

 Sub onError_Go_to_0 () On Error GoTo 0 Beenden Sie den Bereich "C: TempFile.exe" ("A1"). Value = 100 / "PETER" End Sub 

Normalerweise zeigt es das Standardverhalten der Fehlerprüfung und ist wichtig, wenn es zusammen mit "On Error Resume Next" verwendet wird.

Normalerweise können Sie das Feld "Laufzeitfehlermeldung " mit den Optionen "Fortfahren", "Beenden", "Debuggen" und "Hilfe" beobachten . Lassen Sie uns die Verwendung von jedem von ihnen überprüfen.

  • Die Option Continue ignoriert die Ausnahme und setzt den Code fort, wenn dies möglich ist.
  • Die Option end beendet das Programm.
  • Die Debug- Option hebt die Anweisung hervor, bei der der Fehler aufgetreten ist. Dies hilft Ihnen beim Debuggen oder Korrigieren des Codes.
  • Mit der Hilfeoption öffnen Sie die Microsoft MSDN-Hilfeseite.

On Error GoTo 0 mit On Error Resume Next

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 

Im obigen Code werden Fehler ignoriert, bis die Anweisung On Error GoTo 0 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. Wenn ich den obigen Code ausführe, wird der Teilungsfehler angezeigt, dh, der Typ stimmt nicht überein (der numerische Wert kann nicht durch Text geteilt werden).

On Error GoTo 0 deaktiviert alle derzeit im VBA-Code vorhandenen Fehlerbehebungen, dh deaktiviert die Fehlerbehandlung im Hauptcode, während On Error GoTo -1 die Fehlerbehandlung löscht und auf nichts setzt, was Ihnen hilft oder das Erstellen einer weiteren Fehlerfalle ermöglicht.

3. Bei Fehler Gehe zu <ETIKETT

VBA zum Übertragen der Programmsteuerung in die Zeile, gefolgt von der Bezeichnung, wenn Laufzeitfehler auftreten, dh der Code springt zur angegebenen Bezeichnung. Hier werden die Code-Anweisungen zwischen der Exception-Zeile und dem Label nicht ausgeführt.

Diese Methode ist geeigneter und wichtiger, um das Programm ordnungsgemäß zu beenden, wenn während der Ausführung ein schwerwiegender schwerwiegender Fehler auftritt.

In dem unten genannten VBA-Code überträgt das Programm die Steuerung an die Zeile 6, dh label, sobald der Fehler in Zeile 3 auftritt (Popup-Meldung erscheint als „Exception-Handler“ ).

Code:

 Sub OnError_Go_to_Label () On Error GoTo Error_handler: MsgBox 9/0 MsgBox "Diese Zeile wird nicht ausgeführt." Exit Sub Error_handler: MsgBox "Ausnahmebehandler" End Sub 

Hier können Sie feststellen, dass 'Exit Sub' direkt vor dem Label 'Error_handler:' verwendet werden sollte, um sicherzustellen, dass der Error-Handler-Codeblock angehalten wird oder nicht ausgeführt wird, wenn kein Fehler vorliegt. 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 eine Datei erneut öffnen, können Sie auf die Tastenkombination Fn + Alt + F8 klicken. Das Dialogfeld „Makro“ wird angezeigt. Dort können Sie einen gespeicherten Makrocode Ihrer Wahl ausführen oder auf Fn + Alt + F11 klicken ein vollständiges Makrofenster.

Dinge, an die man sich erinnern sollte

  • Bevor Sie Code schreiben, müssen Sie sicherstellen, dass Unterbrechungen bei nicht behandelten Fehlern überprüft oder fälschlicherweise ausgewählt werden. Überfüllungsoption unter Allgemein in den Werkzeugoptionen der VBA-Werkzeugleiste.
  • Dies ist eine Standardeinstellung, mit der Sie Ihren Code für Fehler stoppen können, die nicht behandelt werden.
  • Bei allen Fehlern brechen: Der Code wird bei allen Arten von Fehlern gestoppt.
  • Break-in Class Module: Wenn ein Objekt wie ein Benutzerformular im Code verwendet wird, wird die genaue Zeile hervorgehoben, die den Fehler verursacht.

Empfohlene Artikel

Dies ist eine Anleitung zur VBA-Fehlerbehandlung. Hier wird die Verwendung der VBA-Fehlerbehandlung in Excel zusammen mit einigen praktischen Beispielen und einer herunterladbaren Excel-Vorlage erläutert. Sie können auch unsere anderen Artikelvorschläge durchgehen -

  1. VBA Declare Array (Beispiele)
  2. VBA On Error
  3. VBA Unprotect Sheet
  4. VBA-Spalten | Excel-Vorlagen
  5. VBA Environ

Kategorie: