Fehlerbehandlung reagiert nicht

Ich programmiere schon länger mit Excel und Access, stelle aber immer wieder fest, dass ich mir in allen Prozeduren meine Zeilen zur Fehlerbehandlung (On Error Goto …, …Resume next etc.) sparen kann, weil VBA auf die entsprechenden Anweisungen überhaupt nicht reagiert.
Bei jedem Fehler geht das bekannte Fenster mit der Fehlermeldung auf und ich kann den Debug-Modus starten, aber wirklich abgefangen wird kein Fehler.
Woran kann das liegen? Fehlt mir ein Verweis oder muss ich den Errorhandler irgendwie aktivieren oder sowas?

Hallo,

nicht alle Fehler sind abfangbar. Syntaxfehler toleriert VB zum Beispiel nicht.

Woran kann das liegen?

An der Art der Fehler.
Sieh mal …
http://turku.wi-bw.tfh-wildau.de/~kmeyer/vb/M+T25514…

Fehlt mir ein Verweis oder muss ich den
Errorhandler irgendwie aktivieren oder sowas?

Nein muss man nicht. Aber ‚On Error‘ ist ohnehin nur sehr selten sinnvoll. Meist handelt man sich damit Ergebnisse ein, die man dann nicht erklären kann. Besser ist es, Fehler zu vermeiden.

Gruß, Rainer

Hi,

Nein muss man nicht. Aber ‚On Error‘ ist ohnehin nur sehr
selten sinnvoll. Meist handelt man sich damit Ergebnisse ein,
die man dann nicht erklären kann. Besser ist es, Fehler zu
vermeiden.

Den Satz meinst du hoffentlich nicht ernst …

Der Link war aber gut und die Erklärung des Verhaltens dort auch beschrieben.

Joey

Hi Joey,

Nein muss man nicht. Aber ‚On Error‘ ist ohnehin nur sehr
selten sinnvoll. Meist handelt man sich damit Ergebnisse ein,
die man dann nicht erklären kann. Besser ist es, Fehler zu
vermeiden.

Den Satz meinst du hoffentlich nicht ernst …

aber sicher meine ich das ernst. Du scheinst anderer Meinung zu sein. Kannst Du mir das näher erläutern?

Gruß, Rainer

Moinsen, Rainer!
Danke für den guter Artikelverweis, der war sehr hilfreich.
Ich habe dann auch noch in den Optionen des VBA-Editors die Einstellung „Unterbrechen bei Fehlern“ geändert auf „Bei nicht verarbeiteten Fehlern“, seitdem läuft das Ganze noch etwas runder. Und tatsächlich: Eine Testroutine ergab, dass doch Fehler abgefangen werden, es lag also an meiner Unwissenheit um den Sachverhalt, was aber natürlich auch daran liegt, dass meine Prozeduren so selten Fehler verursachen… ;o))

Jedenfalls nochmal danke, werde mich beim nächsten Problem wieder an Dich wenden.

Hi,

aber sicher meine ich das ernst. Du scheinst anderer Meinung
zu sein. Kannst Du mir das näher erläutern?

Die Fehlerbehandlung ist das A+O einer robusten Applikation. Leider lassen sind bei weitem nicht alle Fehler vorhersehen. Inbesondere alles was mit IO und sonstigen Zugriffen aus aussenstehende Resourcen zu tun hat - dazu gehört auch Memory und damit alles - gehört in Fehlerroutinen gepackt. Ein Programm ohne diese Routinen würde ich als fehlerhaft zurückweisen - und mache dies auch bei unseren Zulieferer/Programmierern. Dies ist sogar noch wichtiger wenn man sich in der beschränkten OO von VBA bewegt und/oder gar Add-Ins bzw. Libraries schreibt.

Zu den Details:

Nein muss man nicht.

doch muß man

Aber ‚On Error‘ ist ohnehin nur sehr selten sinnvoll.

„try catch“ wäre schöner, gibt es in VBA aber nicht. Daher muß dies genommen werden.

Meist handelt man sich damit Ergebnisse ein, die man dann nicht erklären kann

Programmierung ist hochgradig deterministisch. Wenn man sich lange genug damit beschäftigt kann man alles erklären. Sowas ist mir auch noch nie untergekommen

Besser ist es, Fehler zu vermeiden.

Naja, das ist auf dem Niveau von: Wenn alle Menschen gut wären, bräuchte man keine Gesetze. Wie oben erwähnt: Es gibt genug Fehler die ausserhalb der eigenen Routinen auftauchen können.

Viele Grüße
Joey

Hi Joey,

einverstanden. Allerdings glaube ich, daß wir über unterschiedliche Themen reden.

Das Eine ist der Einstieg in VBA, bei dem man sich erst mal über den Funktionsumfang klar werden muß und da wird dann gern mal die Fehlerbehandlung dazu missbraucht festzustellen, ob ein File vorhanden ist.

Das andere ist das erstellen von Software für Kunden. Das ist mir persönlich zu hoch, das sollen Profis machen und die werden sich vermutlich hier keine Tipps holen.

Gruß, Rainer

Ok, Jungs, ihr habt euch sicher schon wieder beruhigt, aber dennoch wollte ich euch erzählen, dass ich dank des links echt einiges mehr über die Geschichte gelernt habe. Entscheidend bei dem Problem war halt die Änderung der Optionseinstellung.

Aber Danke