Debuggen von VBA-Code unter Office 2000

Hallo,

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…

Jetzt die Frage, was ich machen muss, damit VBA sich wieder alt-bekannt verhält… oder wenn das nicht geht ob jemand einen Tip hat, wie man die Fehlersuche einfacher gestaltet.

Danke schon mal im Voraus
Matthias

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

Hallo Manfred,

war im Urlaub und habe ein Zeitland nicht rein geschaut…

In der alten Version gab es beim Auftrene eines Fehlers eigentlich immer die Möglichkeit mit „Debuggen“ an die Stelle in Code zu springen, an der der Fehler auftritt. So kann man den einfach beheben.

In der neuen Version kommt beim Auftreten einiger Fehler einfach nur noch eine Meldung, die man mit OK bestätigen kann. Wenn ich das mache, dann weiss ich aber noch lange nicht bei welcher Zeile der Fehler aufgetreten ist und muss mich im Step-Modus oder durch setzen von Haltenpunkten durch das Programm kämpfen um heraus zu finden, an welcher Zeile das hängt - und das ist meistens irre aufwendig.

Hoffe, das ist besser erklärt.
Gruss Matthias