window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Debugging im VBA-Editor, Teil 1

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Wer mit VBA arbeitet, hat im Gegensatz zu Makros einige Möglichkeiten, den Programmablauf zu beobachten und auf diese Weise Fehler aufzudecken. Auch wenn der VBA-Editor bereits einige Jährchen auf dem Buckel hat und seit Jahren weder VBA noch der VBA-Editor erweitert wurde, bietet er doch einige Möglichkeiten zum Debugging. Dieser Artikel zeigt, wie Debugging funktioniert und welche Werkzeuge der VBA-Editor dazu anbietet.

Was ist Debugging

Unter Debugging versteht man das Entfernen von Bugs. Bugs Damit sind Programmfehler gemeint. Während diese Bezeichnung für Fehler wohl unter Ingenieuren schon länger gängig war, wurde er von Grace Hopper salonfähig gemacht: Dieser fand nämlich 1947 bei den Arbeiten am Mark II tatsächlich eine Motte als Auslöser eines Fehlers vor (siehe Wikipedia).

Unter VBA versteht man unter Debugging vor allem die Untersuchung des Pro-gramm-ablaufs, wobei Prozeduren mit geeigneten Menübefehlen oder Tasten-kom-bi-nationen in mehr oder weniger großen Schritten durchlaufen werden. Bei jedem Schritt lassen sich die aktuellen Werte von Variablen ermitteln. Falsch oder nicht gefüllte beziehungsweise gesetzte Variablen sind der Hauptgrund für logische Fehler im Programmablauf.

Statt die Prozeduren schrittweise zu durchlaufen, können Sie auch gleich festlegen, an welcher Stelle diese angehalten werden soll. Tritt hingegen ein Laufzeitfehler auf, bietet der VBA-Editor automatisch die Möglichkeit, die fehlerhafte Stelle zu untersuchen. Doch genug der warmen Worte – schauen wir uns doch gleich die passenden Werkzeuge an.

Debugging im Fehlerfall

Wer sich noch nicht aktiv um das Thema Debugging gekümmert hat, wird wohl am ehesten durch einen Fehler damit in Verbindung gekommen sein. Nehmen wir folgende Funktion zum Dividieren als Beispiel:

Public Function Dividieren(intDividend As Integer, _
         intDivisor As Integer) As Single
     Dim sngErgebnis As Single
     sngErgebnis = intDividend / intDivisor
     Dividieren = sngErgebnis
End Function

Wenn Sie diese Funktion mit den Werten 3 und 0 über das Direktfenster aufrufen, erscheint die Fehlermeldung aus Bild 1. Dort finden Sie unter anderem eine Schaltfläche mit der Beschriftung Debuggen, mit der Sie in den Debugging-Modus einsteigen können.

Laufzeitfehler mit der Möglichkeit, zu debuggen

Bild 1: Laufzeitfehler mit der Möglichkeit, zu debuggen

Ein Klick auf diese Schaltfläche schließt die Fehlermeldung und hebt die den Fehler auslösende Zeile im VBA-Editor farblich hervor (siehe Bild 2). Sie können nun beispielsweise mit der Maus über die in der Zeile enthaltenen Variablen fahren, um ihre Werte anzuzeigen.

Debugging eines Laufzeitfehlers

Bild 2: Debugging eines Laufzeitfehlers

Dies gelingt übrigens auch auf andere Weise (manchmal – vor allem bei komplizierteren Ausdrücken – zeigt sich die direkte Anzeige im Codefenster etwas störrisch): Dabei nehmen Sie das Direktfenster zuhilfe und lassen sich dort mit der Debug.Print-Anweisung den Inhalt der zu untersuchenden Variablen ausgeben. Dabei geben Sie den Namen der Variablen als Parameter an (siehe Bild 3). Hier erkennen Sie direkt, dass der Divisor einen unzulässigen Werte angenommen hat (vermutlich unerwarteterweise) und können eine entsprechende Prüfung einbauen.

Variablenwerte über das Direktfenster ermitteln

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar