- Artikel
Validiert eine Fehlerbehandlungsroutine und definiert ihre Position innerhalb einerVerfahren; Mit dieser Anweisung ist es auch möglich, eine Fehlerbehandlungsroutine ungültig zu machen.
Syntax
In der Zeile „Gehe zu Fehler“.
Bei Fehler Weiter fortsetzen
Bei Fehler GoTo 0
Die Syntax der AnweisungBei Fehlerkann folgende Formen annehmen:
Stellungnahme | Beschreibung |
---|---|
In der Zeile „Gehe zu Fehler“. | Aktiviert die Fehlerbehandlungsroutine, die bei beginntLiniespezifiziert inl’argumentLinieerforderlich. L’argumentLinieist irgendeinZeilenbeschriftungoderZeilennummer. Wenn einLaufzeit Fehlerauftritt, überprüfen Sie die Filialen unterLinie, wodurch der Fehlerhandler aktiv wird. DerLinieDer angegebene Wert muss sich in derselben Prozedur wie die Anweisung befindenBei Fehler; andernfalls ein Fehlertritt zur Kompilierungszeit auf. |
Bei Fehler Weiter fortsetzen | Gibt an, dass die Steuerung bei Auftreten eines Laufzeitfehlers zu springtl’Anweisungunmittelbar nach der Anweisung, bei der der Fehler aufgetreten ist, und die Ausführung wird fortgesetzt. Es wird empfohlen, diese Formulierung anstelle der Anweisung zu verwendenBei Fehler GoToum auf Objekte zuzugreifen. |
Bei Fehler GoTo 0 | Macht alle aktivierten Fehlerhandler in der aktuellen Prozedur ungültig. |
Bemerkungen
In Ermangelung einer AnweisungBei Fehler, jeder Laufzeitfehler ist nicht behebbar; mit anderen Worten: Es erscheint eine Fehlermeldung und die Ausführung wird gestoppt.
Ein Fehlerbehandler ist „festgeschrieben“, wenn er durch eine Anweisung festgelegt wurdeBei Fehler; Ein „aktiver“ Fehlerhandler ist ein validierter Handler, der einen Fehler behandelt. Wenn ein Fehler auftritt, während ein Fehlerbehandler aktiv ist (zwischen dem Auftreten des Fehlers und einer Anweisung).Wieder aufnehmen,Sub verlassen,Exit-FunktionoderExit-Eigenschaft), kann der Fehlerbehandler der aktuellen Prozedur den Fehler nicht verarbeiten. Die Kontrolle kehrt zur aufrufenden Prozedur zurück.
Wenn die aufrufende Prozedur über einen aktivierten Fehlerhandler verfügt, ist dieser für die Fehlerbehandlung aktiviert. Wenn der Fehlerhandler der aufrufenden Prozedur ebenfalls aktiv ist, wird die Kontrolle an frühere aufrufende Prozeduren zurückgegeben, bis ein festgeschriebener, aber inaktiver Fehlerhandler gefunden wird. Wenn kein festgeschriebener und inaktiver Fehlerbehandler gefunden wird, ist der Fehler an der Stelle, an der er aufgetreten ist, schwerwiegend.
Jedes Mal, wenn der Fehlerhandler die Kontrolle an eine aufrufende Prozedur zurückgibt, wird diese Prozedur zur aktuellen Prozedur. Sobald ein Fehler von einem Fehlerhandler in einer Prozedur behandelt wird, wird die Ausführung in der aktuellen Prozedur an der durch die Anweisung angegebenen Stelle fortgesetztWieder aufnehmen.
Bemerkte
Eine Fehlerbehandlungsroutine ist keine ProzedurSuboderFunktion. Es handelt sich um einen Codeabschnitt, der durch eine Zeilenbezeichnung oder Zeilennummer gekennzeichnet ist.
Fehlerbehandlungsroutinen basieren auf dem EigenschaftswertNummerdes ObjektsIrrenum die Fehlerursache zu ermitteln. Die Fehlerbehandlungsroutine sollte die Werte der relevanten Eigenschaft des Objekts testen oder speichernIrrenbevor ein weiterer Fehler auftritt oder eine möglicherweise fehlerverursachende Prozedur aufgerufen wird. ObjekteigenschaftswerteIrrenspiegelt nur den aktuellsten Fehler wider. Die zugehörige FehlermeldungFehlernummerist darin enthaltenFehlerbeschreibung.
L'AnweisungBei Fehler Weiter fortsetzenermöglicht die Fortsetzung der Ausführung ab der Anweisung, die unmittelbar auf die Anweisung folgt, die den Ausführungsfehler verursacht hat, oder unmittelbar nach dem letzten Aufruf, der von der Prozedur mit der Anweisung ausgeführt wurdeBei Fehler Weiter fortsetzen. Somit kann die Ausführung trotz eines Ausführungsfehlers fortgesetzt werden. Sie können die Fehlerbehandlungsroutine an der Stelle platzieren, an der ein Fehler auftreten könnte, anstatt die Kontrolle an eine andere Stelle in der Prozedur zu übertragen. ein StatementBei Fehler Weiter fortsetzenwird inaktiv, wenn eine andere Prozedur aufgerufen wird; Es empfiehlt sich daher, eine Anweisung zu platzierenBei Fehler Weiter fortsetzenin jeder Routine, die eine Online-Verwaltung von Fehlern erfordert, die in dieser Routine aufgetreten sind.
Bemerkte
Es ist besser zu verwendenBei Fehler Weiter fortsetzenstattBei Fehler GoTowenn Sie Fehler behandeln, die beim Zugriff auf andere Objekte entstehen. ObjektüberprüfungIrrenNach jeder Interaktion mit einem Objekt werden alle Unklarheiten darüber beseitigt, auf welches Objekt der Code zugegriffen hat. Sie wissen genau, in welches Objekt der Fehlercode eingefügt wurdeFehlernummerund welches Objekt den Fehler verursacht (das in angegebene Objekt).Fehlerquelle).
L'AnweisungBei Fehler GoTo 0wird verwendet, um die Fehlerbehandlung in der aktuellen Prozedur zu deaktivieren. Diese Anweisung deklariert Zeile 0 nicht als Start des Fehlerbehandlungsprogramms, selbst wenn die Prozedur eine Zeilennummer 0 enthält. In Abwesenheit einer AnweisungBei Fehler GoTo 0, wird der Fehlerhandler beim Beenden der Prozedur automatisch deaktiviert.
Um zu verhindern, dass der Fehlerhandler ausgeführt wird, wenn kein Fehler vorliegt, platzieren Sie eine AnweisungSub verlassen,Exit-FunktionoderExit-Eigenschaftunmittelbar vor der Fehlerbehandlungsroutine, wie das folgende Beispiel zeigt:
Sub InitializeMatrix(Var1, Var2, Var3, Var4) Bei Fehler GoTo ErrorHandler . . . Sub ErrorHandler beenden: . . . Nächstes Ende fortsetzen
Hier folgt der Fehlerbehandlungscode der AnweisungSub verlassenund steht vor der AnweisungEnd Subum es vom Verfahrensablauf zu trennen. Fehlerhandler können an einer beliebigen Stelle in einer Prozedur platziert werden.
Fehler, die von Objekten ausgehen und nicht abgefangen werden, werden während der Ausführung des Objekts als ausführbare Datei an die steuernde Anwendung zurückgegeben. In der Entwicklungsumgebung werden nicht abgefangene Fehler nur dann an die steuernde Anwendung zurückgegeben, wenn die entsprechenden Optionen gesetzt sind. Weitere Informationen zu Optionen, die beim Debuggen, Aktivieren von Methoden und Erstellen aktiviert werden könnenKlassenbis zumHost-Appsiehe dessen Dokumentation.
Wenn Sie ein Objekt erstellen, das auf andere Objekte zugreift, empfiehlt es sich, die von diesen erneut übertragenen Fehler zu behandeln, ohne sie zu verarbeiten. Wenn Sie damit nicht zurechtkommen, gleichen Sie den Fehlercode abFehlernummerund einen der von Ihnen definierten Fehler, und übergeben Sie ihn dann an den Code zurück, der Ihr Objekt aufruft. Um einen Fehler zu definieren, fügen Sie der Konstante Ihre Fehlernummer hinzuvbObjectError. Gehen Sie beispielsweise bei Fehlernummer 1052 wie folgt vor:
Err.Number = vbObjectError + 1052
Bemerkte
Systemfehler bei Aufrufen vonDynamische LinkbibliothekenWindows- (DLL) oder Macintosh-Coderessourcen lösen keine Ausnahmen aus und können nicht mit der Visual Basic-Fehlererkennung abgefangen werden. Beim Aufrufen von DLL-Funktionen sollten Sie den Erfolg oder Misserfolg jedes Rückgabewerts überprüfen (abhängig von der API-Spezifikation) und, falls dies fehlschlägt, den Wert in der Eigenschaft überprüfenLastDLLErrordes ObjektsIrren.LastDLLErrorGibt auf Macintosh immer Null zurück.
Beispiel
In diesem Beispiel wird zunächst die Anweisung verwendetBei Fehler GoToum die Position einer Fehlerbehandlungsroutine innerhalb einer Prozedur anzugeben. In unserem Beispiel führt der Versuch, eine geöffnete Datei zu löschen, zu Fehler 55. Dieser Fehler wird in der Fehlerbehandlungsroutine behandelt und die Kontrolle wird dann an die Anweisung zurückgegeben, die den Fehler verursacht hat. AnweisungBei Fehler GoTo 0deaktiviert die Fehlerbehebung.
L’Anweisung zum Fortsetzen des nächsten Fehlerswird dann verwendet, um die Fehlererkennung zu verzögern, sodass der Kontext des von der nächsten Anweisung generierten Fehlers mit Sicherheit bekannt sein kann. Beachten Sie, dassErr.Clearwird zum Löschen von Objekteigenschaften verwendetIrrensobald der Fehler behoben wurde.
Sub OnErrorStatementDemo() On Error GoTo ErrorHandler ' Fehlerbehandlungsroutine aktivieren. Öffnen Sie „TESTFILE“ für die Ausgabe als Nr. 1. Öffnen Sie die Datei für die Ausgabe. Kill „TESTFILE“ ' Versuch, geöffnete Datei zu löschen. Bei Fehler Gehe zu 0 ' Fehler-Trapping ausschalten. Bei Fehlerfortsetzung als nächstes ' Fehlerabfangen aufschieben. ObjectRef = GetObject("MyWord.Basic") ' Versuchen Sie, ein nicht vorhandenes ' Objekt zu starten, und testen Sie dann auf 'Überprüfen Sie, ob wahrscheinliche Automatisierungsfehler vorliegen.' Wenn Err.Number = 440 oder Err.Number = 432, dann „Teilen Sie dem Benutzer mit, was passiert ist.“ Löschen Sie dann das Err-Objekt. Msg = „Beim Versuch, das Automatisierungsobjekt zu öffnen, ist ein Fehler aufgetreten!“ MsgBox Msg, , „Deferred Error Test“ Err.Clear ' Err-Objektfelder löschen End If Exit Sub ' Beenden, um den Handler zu vermeiden. ErrorHandler: ' Fehlerbehandlungsroutine. Wählen Sie Case Err.Number ' Fehlernummer auswerten. Fall 55 'Fehler „Datei bereits geöffnet“. Schließen #1 ' Geöffnete Datei schließen. Case Else ' Behandeln Sie hier andere Situationen ... End Select Resume ' Ausführung in derselben Zeile fortsetzen ', die den Fehler verursacht hat. End Sub
Siehe auch
- Datentypen
- Anweisungen
Unterstützung und Feedback
Haben Sie Fragen oder Kommentare zu OfficeVBA oder dieser Dokumentation? Konsultieren Sie den entsprechenden AbschnittOfficeVBA-Unterstützung und FeedbackAnweisungen zum Erhalten von Support und zum Einreichen von Feedback finden Sie hier.
FAQs
How do I comment out a lot of code in VBA? ›
Enter a Multi-Line VBA Comment
The easiest way is to select all the lines and then use the comment button from the toolbar or you can also add an APOSTROPHE at the starting of each line. The moment you click the comment button it will convert all the lines into a multi-line comment block.
This language is considered to be one of the easiest coding languages to learn for those who don't have a background in computer science. It's likely that if you have experience working with Microsoft products such as Excel, you already have a basic knowledge of VBA, perhaps without even realizing it.
How do I ignore all errors in Excel VBA? ›One of the most straightforward ways to ignore errors is to use the IFERROR function. This function allows you to replace any #N/A errors in your spreadsheet with a customized message or cell value. Additionally, you can ignore errors by changing Excel's error checking options in the Excel Options dialog box.
Why is VBA difficult to learn? ›For those who find learning VBA hard, some mention the difficulty in handling scripts. Constructing a script in VBA isn't as easy as doing so in Perl and Python. With Perl and Python, the programmer finds the collections built right into the programming language.
How do you mass comment out codes? ›Select the lines of code you want to comment out. Press Ctrl + / on Windows or Command + / on Mac to toggle line comments. Alternatively, you can press Ctrl + Shift + / to toggle block comments.
How do you comment out multiple lines in Visual Basic? ›For a multiple-line comment, repeat the comment symbol ( ' ) on each line. Although placing each statement on a separate line is the recommended method, Visual Basic also allows you to place multiple statements on the same line.
How much do VBA coders make? ›Annual Salary | Monthly Pay | |
---|---|---|
Top Earners | $65,500 | $5,458 |
75th Percentile | $64,500 | $5,375 |
Average | $63,000 | $5,250 |
25th Percentile | $61,500 | $5,125 |
A one day course designed to get you started with VBA / Excel Macros. This course is designed to teach experienced users of Excel how to automate spreadsheets. If you would prefer a more in-depth course we also offer a 2 day VBA course.
How do you bulk comment in visual code Python? ›To comment out multiple lines in Visual Studio Code, you can use the shortcut Ctrl + / (Windows/Linux) or Command + / (Mac). Select the lines you want to comment on, then press the shortcut to comment on them. Press the shortcut again to uncomment the lines.