Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Alternative zur On Error Resume next?

Begonnen von Doming, Oktober 27, 2025, 11:06:13

⏪ vorheriges - nächstes ⏩

Doming

Hallo,

nachdem ich jetzt @PhilS VBA-Tutorials angesehen habe (vielen Dank für den Input, sehr gute Anregungen) und natürlich bei den Ausführungen zu "On Error Resume Next" geendet habe: Kann man die Fehlerbehandlung nicht so umbauen, dass die Fehlermeldung (Goto 0) aktiv bleibt und nur ein bestimmter Fehler ignoriert wird?

Klar, man kann einen ErrorHandler ans Ende setzen und ihn bei einem bestimmten Fehlercode an die nächste Zeile zurücksetzen, aber bei Goto 0 bleibt der Code so komfortabel an der fehlerhaften Zeile stehen und man kann ihn nach Behandlung im Direktfenster einfach weiterlaufen lassen. Springt man in die Fehlerberhandlung mit Msgbox wird die Laufzeit beendet und die meisten Variablen sind weg. Außerdem weiß man ja nicht genau, in welcher Zeile der Fehler liegt, es sei denn, man nummeriert die Zeilen und arbeitet mit Erl.
Die Zeilennummern nerven beim Editieren.

Gruß
 Doming


mmarschner

Hallo Doming,

ich habe im ErrorHandler nach der Ausgabe der Fehlermeldung noch ein "Resume Next" eingebaut. Wenn ich auf einen Fehler laufe, kann ich mit F8 anschließend auf die Zeile zurückspringen, in der der Fehler aufgetreten ist.

Oder habe ich da etwas falsch verstanden?

Michael

MzKlMu

Hallo,
das hast Du falsch verstanden.
Resume Next macht einfach mit dem nächsten Befehl weiter, da wird nichts unterbrochen. Daher ist der Befehl mit Vorsicht zu geniesen.

Aus der Hilf zu "On Error Resume Next"
Zitat von: Access HilfeLegt fest, dass bei Auftreten eines Laufzeitfehlers die Steuerung zu der Anweisung geleitet wird, die unmittelbar auf die Anweisung folgt, bei der der Fehler aufgetreten ist und die Ausführung fortgesetzt wird. Verwenden Sie dies statt On Error GoTo beim Zugriff auf Objekte.
Gruß Klaus

PhilS


Zitat von: mmarschner am Oktober 27, 2025, 12:12:09ich habe im ErrorHandler nach der Ausgabe der Fehlermeldung noch ein "Resume Next" eingebaut. Wenn ich auf einen Fehler laufe, kann ich mit F8 anschließend auf die Zeile zurückspringen, in der der Fehler aufgetreten ist.
Ähh... Nein.
Was man machen kann, und was du vermutlich meinst, ist nach der Fehlerbehandlung und nach dem dort zwingend vorhandenem "Resume EXIT_Prozedur" kann man ein einfaches "Resume" (ohne Next!) schreiben. Dieser Code wird unter normalen Umständen niemals ausgeführt. Beim Debuggen kann man aber bei der Anzeige einer Anzeige den Code in Haltemodus versetzte und dann mittels "Set Next Statement" diese "Resume"-Zeile als nächste Zeile festlegen. Dann springt der Code bei F8 genau zu der Zeile, die den Fehler ausgelöst hat.

VORSICHT: Wenn man nicht zuverlässig dafür gesorgt hat, dass dieses Resume niemals im normalen Ausführungskontext der Anwendung beim Benutzer ausgeführt werden kann, entsteht dort eine Endlosschleife.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Doming

Hallo und danke für die Wortmeldungen.

ich hatte an ein präventives "wenn genau dieser Fehler dann ignorieren" gedacht, aber während ich das hier tippe merke ich schon, dass der ErrorHandler mit
if Err.Number = xx then Resume Next
genau das Gewünschte macht.

Gruß
 Doming

Beaker s.a.

M.M.n. sollte man eher versuchen auftretende Fehler zu analysieren,
und im besten Fall vermeiden. Geht öfter als man denkt.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)