wenn ich den Code ausführe kommt als erstes halt die Fehlermeldung Pfad nicht gefunden, danach bricht das Programm ab, besser gesagt bringt das debuggenzeugl ...
ist on error ... nur einmal verfügbar und danach ist es ungültig oder wie?
mfg andré
wenn ich den Code ausführe kommt als erstes halt die Fehlermeldung Pfad nicht gefunden, danach bricht das Programm ab, besser gesagt bringt das debuggenzeugl ...
ist on error ... nur einmal verfügbar und danach ist es ungültig oder wie?
mfg andré
Gruss Udo
On Error GoTo errorhandler
ChDir "testpfaddenesnichtgibt:\"
Exit Sub
errorhandler:
MsgBox Error
Resume Next
Exit Sub
errorhandler:
MsgBox "Error"
End Sub
So wie ich das sehe, wird der Befehl 1x ausgeführt, wenn eben ein Fehler auftritt. Soll die Fehlerprüfung im Anschluss an die Fehlermeldung wieder (weiter) aktiv sein, dann musst Du den Befehl On Error Goto errorhandler NACH der Sprungmarke positionieren, damit sie nach dem Sprung wieder aktiviert wird.
Aber: Was soll in Deinem Beispiel der Sprunt zur Marke 1 bewirken? Die Fehlerprozedur wird offensichtlich ausgelöst, wenn ChDir ... einen Fehler produziert. Dann wird der Hinweis angzeigt und Du springst wieder unmittelbar zu dem Befehl, der den 1. Fehler ausgelöst hat. Willst Du Dich in eine Endlosschleife reinmanövrieren?
Dass die "On Error Goto" - Anweisung nur 1x ausgeführt wird, ergibt sich logischerweise daraus, dass man beim Auftreten eines Fehlers üblicherweise eine geeignete (Gegen-)Maßnahme ergreift. Dass man danach den 1. Fehler gezielt wieder produziert, ist wohl nicht im Sinne des Erfinders.
Gruß,
Charlie
Aktiviere die Entwicklertools in Excel, falls dies noch nicht geschehen ist. Gehe zu Datei > Optionen > Menüband anpassen und aktiviere das Kontrollkästchen für Entwicklertools.
Öffne den VBA-Editor mit ALT + F11.
Erstelle ein neues Modul:
VBAProject (DeineDatei.xlsm) > Einfügen > Modul.Füge den folgenden Code ein:
Sub BeispielFehlerbehandlung()
On Error GoTo errorhandler
' Beispielcode, der einen Fehler erzeugt
ChDir "testpfaddenesnichtgibt:\"
Exit Sub
errorhandler:
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
Resume Next
End Sub
Testen des Codes: Führe das Makro aus und beobachte, wie die Fehlerbehandlung funktioniert. Die MsgBox zeigt eine Fehlermeldung an, falls ein Fehler auftritt.
Fehler: „Pfad nicht gefunden“:
Problem mit On Error GoTo:
On Error GoTo nicht mehr funktioniert, könnte es daran liegen, dass der Fehlerhandler nicht korrekt gesetzt ist. Überprüfe die Reihenfolge deiner Fehlerbehandlungsanweisungen.Endlosschleife durch Resume:
Resume eine Bedingung vorhanden ist, die den Code nicht erneut zum Fehler führt.On Error Resume Next:
On Error Resume Next
ChDir "testpfaddenesnichtgibt:\"
If Err.Number <> 0 Then
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
End If
On Error GoTo 0:
Einfacher Fehlerhandler:
Sub EinfacheFehlerbehandlung()
On Error GoTo errorhandler
' Code, der einen Fehler erzeugt
ChDir "falscherPfad"
Exit Sub
errorhandler:
MsgBox "Fehler aufgetreten!"
End Sub
Fehler mit Resume Next behandeln:
Sub FehlerUndResume()
On Error Resume Next
ChDir "falscherPfad"
' Weiterer Code, der möglicherweise fehlerhaft ist
MsgBox "Programm läuft weiter trotz Fehler."
End Sub
Nutze benannte Sprungmarken für bessere Lesbarkeit deines Codes. Anstatt „1:“, benutze aussagekräftige Namen wie errorhandler:.
Dokumentiere deine Fehlerbehandlungsroutinen. So kannst du und andere später nachvollziehen, was bei einem Fehler passieren soll.
Verwende Fehlernummern in Kombination mit Select Case, um spezifische Fehler zu behandeln und unterschiedliche Aktionen auszuführen.
1. Was ist der Unterschied zwischen On Error GoTo und On Error Resume Next?
On Error GoTo springt zu einer definierten Stelle im Code, wenn ein Fehler auftritt, während On Error Resume Next den Fehler ignoriert und das Programm fortsetzt.
2. Wie können ich sicherstellen, dass Fehler richtig behandelt werden?
Stelle sicher, dass du nach jeder kritischen Anweisung On Error GoTo oder On Error Resume Next verwendest und die Sprungmarken gut dokumentiert sind.