Hallo, Matze!
eine Frage zu VBA.
Bin umgestiegen von Office 97 auf Office 2000. Im Prinzip ja
kein Problem. Aber die Fehlersuche ist ziemlich blöde, da
viele Fehlermeldungen das „Testen“, d.h. springen zur
fehlerhaten Zeile nicht mehr unterstützen und man nur noch
„OK“ klicken kann. Das hilft nicht wirklich…
Ähem, ich weiß gerade nicht wirklich, was Du meinst. Du solltest ein Programm so schreiben, dass solche Fehlermeldungen nicht auftauchen. Dazu baust Du in JEDE Funktion, die einen Fehler aufwerfen kann bzw. könnte, am besten folgendes Konstrukt ein:
Sub Testprozedur()
'\*\*
'====================================================
'/\*\*
Const cstrProcName = "Testprozedur\_Click"
'--------------------
On Error GoTo ErrorHandler
' Hier steht Dein Code...
' Fehlerbehandlungsblock hinzugefügt vom Fehlerbehandlungsroutinen
' -Add-In. Bearbeiten Sie diesen Codeabschnitt NICHT.
'--------------------
ErrorHandler:
Select Case Err.Number
Case 0
case x
' Hier könnten vorhersehbare Fehler auftauchen und dann
' entsprechend verarbeitet und mit Resume Next weiter-
' gearbeitet werden
Case Else
' mcstrModName als modulweite Konstante mit Namen
MsgBox "Modul: " & vbTab & mcstrModName & vbCrLf \_
& "Prozedur:" & vbTab & cstrProcName & vbCrLf \_
& "Code:" & vbTab & Err.Number & vbCrLf \_
& "Fehler:" & vbTab & Err.Description & vbCrLf \_
& "Source:" & vbTab & Err.Source, vbExclamation
Resume ErrorHandler
End Select
' Ende des Fehlerbehandlungsblocks.
End Sub
Somit gibt’s nur noch die Fehlermeldungen in der MsgBox-Zeile. Zum einen kann Dir der Anwender so genau sagen, wo ein Fehler aufgetreten ist (Welches Modul, welche Funktion, welcher Fehlercode?). Zum anderen kannst Du dann mit Ctrl+Break die Ausführung unterbrechen. Dann kannst Du mit Resume statt Resume ErrorHandler direkt zur fehleraufrufenden Zeile springen.
Vielleicht nicht ganz so „einfach“ wie die alte Funktion, aber die Qualität Deiner Software verbessert sich: Du bekommst keine unkontrollierten Abstürze.
Gruß, Manfred