Clever-Excel-Forum

Normale Version: VBA ErrorHandler Fehlerfenster
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

Ich habe ein Programm geschrieben und möchte bei einem Fehler per Mail informiert werden. Wie ich Emails aus Excel versenden kann weiß ich. Jetzt meine eigentliche Frage:

Im meinem Quelltext muss dafür ja an einer Stelle „On Error GoTo Errorhandler“ stehen. Bei dem Errorhandler wird dann die Mail verschickt und ich möchte dann aber nicht das Programm fortsetzten, sondern ich möchte trotzdem dieses Fehlerfenster angezeigt bekommen (Das typische Fenster mit „Fortfahren“ „Debuggen“ „Beenden“ „Hilfe“).

Wie ist das möglich? Ist das überhaupt möglich?

Danke für Eure Hilfe,
Max
Hallo Max,

Code:
Sub aaa()
  Dim i As Long
  On Error GoTo Errorhandler
  i = 1 / 0
 
  Exit Sub
Errorhandler:
  MsgBox "Schicke eine Mail"
  On Error GoTo 0
  Resume
End Sub

Gruß Uwe
Die Frage sollte weniger sein, ob dies möglich ist, sondern ob es sinnvoll ist.
Die Antwort darauf: Nein. Es ist nicht sinnvoll.

Wenn ein Chirurg einen Herzinfarkt hat, zwingst Du ihn doch nicht noch, eine weitere Operation durchzuführen.

Bau' lieber ein Logging in Deine Anwendung ein und orientiere Dich an guten Praxisbeispielen.
(08.04.2021, 06:56)Sulprobil schrieb: [ -> ]Die Frage sollte weniger sein, ob dies möglich ist, sondern ob es sinnvoll ist.
Die Antwort darauf: Nein. Es ist nicht sinnvoll.

Wenn ein Chirurg einen Herzinfarkt hat, zwingst Du ihn doch nicht noch, eine weitere Operation durchzuführen.

Bau' lieber ein Logging in Deine Anwendung ein und orientiere Dich an guten Praxisbeispielen.

Für meine Anwendung ist es natürlich sinnvoll...sonst würde ich ja wohl nicht fragen
Hallo Max,

ist die Frage für Dich beantwortet, da keine Rückmeldung kam?

Gruß Uwe
Hallöchen,

interessant könnte bei so was zuweilen die Verwendung von Zeilennummern sein. Dann kannst Du selber im Code in der entsprechenden Zeile nachschauen statt dem Anwender den PC mit der Meldung zu blockieren Smile
Könnte natürlich auch sein, Du willst mit Deinem Anwender zur Laufzeit den Code ändern, dann wäre es sicher von Vorteil wenn anschließend an passender Stelle die Meldung kommt. Geht zwar nicht immer, aber auch nicht immer öfter Smile Oder Du löst statt dem Resume den Fehler am Ende nochmal aus mit Err.Raise Err.Number. Wüsste ich aber gerade auch nicht, wieso.

Spaß beiseite. ich tu mich ja immer etwas schwer, etwas als sinnlos abzutun. Unsere IT z.B. wollte immer eine schriftliche Anforderung (Mail), bevor die was getan haben. Ich könnte mir vorstellen, dass es dem Anwender hilft, wenn im Fehlerfall automatisch die E-Mail rausgeht und der Fehler dann gleich per Telefon und am "offenen Patienten" besprochen und die Ursache gesucht werden kann.

Code:
Sub haha()
Dim i As Long
10 On Error GoTo Errorhandler
20 i = 1 / 0
30 Exit Sub
Errorhandler:
MsgBox "Hier kommt die Maus" & vbLf & "Zeile: " & Erl & vbLf & "Fehler: " & Err.Number & vbLf & Err.Description
On Error GoTo 0
Resume
End Sub
(08.04.2021, 13:10)schauan schrieb: [ -> ]...
Spaß beiseite. ich tu mich ja immer etwas schwer, etwas als sinnlos abzutun.
...

Lass' es mich mit einem Gleichnis versuchen: Wenn jemand von Gas wenig versteht und mit einer Kerze nach einem Loch in der Gasleitung suchen möchte, dann sage ich ihm freundlich, dass dies nicht sinnvoll ist.
Es steht Dir natürlich frei, ihm zu helfen und seine Kerze anzuzünden.

Der ungeübte Umgang mit einem Error Handler ist ja noch Eines, aber wenn womöglich Emails automatisch versendet werden, würde ich zunächst weiter freundlich darauf hinweisen wollen, dass dies gegen Compliance Grundsätze des Unternehmens verstoßen dürfte.

Es kann durchaus sinnvolle Anwendungen geben, die durchdachte komplexere Error Handler verwenden und automatisch Emails erzeugen (die dann vom Anwender manuell verantwortlich verschickt werden).

Aber ich würde darauf achten wollen, dass der Programmierer erfahren genug ist, auch Versionsführung, Logging (zum Beispiel auf einem Laufwerk, auf das auch der Programmierer Zugriff hat) und eine gute Dokumentation einzusetzen. Die Eingangsfrage lässt mich daran zweifeln.
Hi Bernd,

ich meine, das war aber jetzt weit hergeholt. Andererseits, bei Nordstream 2 wäre die Kerze streckenweise rechtzeitig aus und es könnte zumindest nichts passieren ... 100

Ein Loging kann übrigens durchaus schwerer bei einem betrieblichen Systemausschuss durchzuboxen sein als ein automatisierter Fehlerbericht.
Man müsste beim Loging dafür sorgen, dass kein anderer Anwender Zugriff darauf hat. Man kann aber auch nicht einfach für jeden User ein Logfile erstellen.
Wenn der Kollege aus der Frühschicht mitbekommt, dass bei seinem Vorgänger in der Nachtschicht laufend Fehler geloggt werden ... Im Logging darf kein Rückschluss auf den Verursacher herstellbar sein. Da könnte schon ein Speicherdatum ausreichen, das man mit einem Schichtplan abgleichen könnte. Oder ich hab irgendwo die Info "Zuletzt gespeichert von..." und kann damit zumindest feststellen, wer den letzten Fehler verursacht hat.
Das sorgt dann insgesamt für Freude beim Entwickler, wenn der wissen will, wie der Anwender vorgegangen ist oder ob ihm was aufgefallen ist oder ...

Der Fehlerbericht geht hingegen an den Support / Entwickler, den sieht kein anderer Kollege, den sieht kein Chef (sofern der Entwickler nicht gerade bei ihm auf dem Schoß sitzt Smile ), ... und wenn ich als Verursacher auch noch auf Senden drücken muss, passt. Wenn nicht, und der Entwickler kann mich davon überzeugen, passt es für mich auch. Ich nehme ja an, dass ich die Mail in meinen gesendeten habe und prüfen kann, was der Entwickler da so rein schreibt und verschickt. Ich könnte jetzt noch spekulieren dass der Entwickler extern ist und dadurch vielleicht Zugriff auf Betriebsgeheimnisse bekommt. ...

Das Thema ist sehr vielschichtig und ich bin da in einem Excel-Forum mehr bei der technischen Umsetzung, äußere auch mal meine Bedenken oder Erfahrungen, sofern das nicht andere tun, aber klären und verantworten muss das letztendlich der TE. Ich hab vor ein paar Jahren mal auf unserem Forumstreffen einen kleinen Vortrag zum Thema On Error gehalten, mal sehn, vielleicht stelle ich den noch bei den Workshops ein.