Hallo Desby,
ohne On Error Statement keine Fehlerbehandlungsroutine und damit auch keine E-Mail Nachricht !
Für eine globale Fehlerbehandlungsroutine (die letzthin deine Nachricht versendet) kannst du aber
ein Klassenmodul verwenden.
Mit dem Class_Terminate Ereignis löst du dann den Sendevorgang aus
(schlicht und ergreifend funktioniert auch CDO Code für eine einfache Nachricht).
Über gbDebugMode in der Main-Prozedur steuerst du Stop : Resume oder benachrichtigst den User mit einer Msg-Box über den Halt.
Den informellen Inhalt der Nachricht schreibst du an den Beginn jeder weiteren Prozedur in etwa so
Dim oKlassenmodul As Klassenmodul
Set oKlassenmodul = New Klassenmodul: Klassenmodul.SetLocation "Modulname", "Prozedurname"
Da die ausführende Prozedur selbst keinen "errorhandler" enthält landet der Fehler auf dem call stack,
(das jeweilige Klassenmodul wird wie eine Variable gelöscht -class terminate).
Deine Nachricht sollte dann so bei dir ankommen :
29 03 14 22:29:35 auto errorhandler [01_ErrorClass.xlsm]Modul1.TestSub2, Error 91: Objektvariable oder With-Blockvariable nicht festgelegt
vgl. "Professional Excel Development Second Edition "
Viele nützliche Hinweise und Codebeispiele findest du im Kapitel 15 "Error Handling Concepts" ff.
PS:
Nicht nur "Meistens" sondern schon immer haben User einen Laufzeitfehler, dazu sind sie auch User.
Der wahre Laufzeitfehler ist jedoch der Programmierer selbst ;)
|