Hallo,
meine Frage lautet, ob es möglich ist, auszulesen an welcher
Stelle der Fehler gerade aufgetreten ist.
Jups. Ist zwar ne Schweinearbeit an schreiberei und eigentlich sehe ich darin auch kein nutzen. Aber realisieren laesst sich das schon
Also ich habe mir das ungefähr so vorgestellt, dass es eine
Meldung gibt wie:
„In der Sub/Function TEST gab es in der Zeile 35 einen Fehler.
Laufzeit Fehler 13: Typen unverträglich“
Nur so wenig? *gg*
Also das was du brauchst, sind folgende Sachen. Das Error Object (somit kannst du auch die Description vom Error auslesen). Dann noch die Zeilennummer und die Sub / Function. Das erreichst du wie folgt.
Schritt 1: Schreibe Dir einen EventHandler, der das macht was du möchtest
Public Sub MyEventHandler(Fehler as Error, Sub as String, Zeile as integer)
'Hier nun den Source rein, der aufgerufen werden soll
End Sub
Schritt 2:
Du musst in jeder Sub oder Function eine lokale Fehlerbehandlung machen, via On Error goto …
Aber um an die Zeilennummer zu kommen, musst du zusaetzlich jede Zeile durchnummerieren, was unter VBA geht. In deiner lokalen Fehlerbehandlung rufst du einfach den EventHandler auf und übergibst ihm die gewünschten Daten.
Du musst nur unterscheiden … es ist ein behandelbarer Fehler, den wir gleich behandeln und wir rufen den Eventhandler nicht auf… oder wie rufen ihn auf. Aber das wiederrum kannst du ganz leicht mit einem Select Case Konstrukt machen. Naja hört sich vielleicht nen bissl kompliziert an. Ist es nicht. Schau
Private Sub EineSubVonVielen()
On Error Goto ErrHandler
Dim x as integer
10 Msgbox "irgendein Text"
20 x=10
30 x=10+10
40 x=x/0 'Wir rufen einen Fehler auf
50 msgbox "noch nen Text"
60 exit sub
ErrHandler:
Select case err.Number
case DeinErrorDerBehandeltWird
'Dein Source
case EinAndererErrorDerBehandeltWird
'Dein Source
case Else
call MyEventHandler(Err,EineSubVonVielen,Erl)
End Select
End Sub
Wie du siehst, alles nicht so schwer
Ich hoffe ich habe keinen Schreibfehler drinnen, da ich dies aus dem Stehgreif gepostet habe und ohne mich gross in VBA auszukennen
MfG Alex