VBA [basics]: Debuggen im VBA-Editor

Eines Tages passiert es jedem: Der Code kompiliert nicht, Access meldet einen Laufzeitfehler oder das Ergebnis ist schlicht falsch. Genau hier kommt das Debugging ins Spiel. Unter Debugging versteht man alle Techniken, mit denen Du Fehler im VBA-Code gezielt aufspüren, analysieren und beheben kannst. Dieser Artikel richtet sich an Einsteiger und zeigt Dir die wichtigsten Debugging-Möglichkeiten, die direkt im VBA-Editor zur Verfügung stehen.

Beispieldatenbank

Die Beispiele dieses Artikels findest Du in der Datenbank VBABasics_DebuggenImVBAEditor.accdb.

Was bedeutet Debugging überhaupt?

Beim Debugging geht es nicht darum, den Code komplett neu zu schreiben, sondern Schritt für Schritt zu verstehen, was der Code tatsächlich tut.

Häufig unterscheidet sich dieses tatsächliche Verhalten von dem, was man beim Schreiben im Kopf hatte. Debugging hilft Dir dabei, diesen Unterschied sichtbar zu machen.

Gerade in Microsoft Access mit vielen Formularen, Ereignissen und Abfragen ist Debugging unverzichtbar, weil Code oft automatisch ausgelöst wird, zum Beispiel beim Öffnen eines Formulars oder beim Klicken auf eine Schaltfläche.

Der VBA-Editor als Zentrale für das Debugging

Alle hier beschriebenen Techniken werden direkt im VBA-Editor eingesetzt. Du öffnest ihn in Access mit der Tastenkombination Alt + F11. Dort findest Du nicht nur Deinen Code, sondern auch alle Werkzeuge, die Du für das Debugging benötigst (siehe Bild 1).

Der VBA-Editor mit Codefenster und Direktbereich

Bild 1: Der VBA-Editor mit Codefenster und Direktbereich

Mit Alt + F11 kannst Du auch zum Access-Fenster zurückwechseln. Eine weitere interessante Tastenkombination ist Strg + G.

Damit springst Du sowohl vom Access-Fenster als auch bei aktiviertem VBA-Editor direkt in den Direktbereich, der für die Ausgabe von Debug.Print-Anweisungen verwendet werden kann.

Besonders wichtig sind für das Debuggen das Direktfenster, Haltepunkte, das schrittweise Ausführen von Code sowie einfache Ausgaben mit Debug.Print.

Debug.Print – Werte sichtbar machen

Eine der einfachsten und zugleich effektivsten Debugging-Techniken ist die Ausgabe von Werten mit Debug.Print. Mit dieser Anweisung kannst Du Variablen, Ausdrücke oder Texte in das Direktfenster schreiben. Gleichzeitig ist dies die einzige Möglichkeit, um dort Ausgaben zu erzeugen.

Schauen wir uns die folgende kleine Prozedur an. Sie enthält lediglich eine einzige Anweisung, die den Text Hallo in den Direktbereich schreibt:

Public Sub Debugging()
     Debug.Print "Hallo"
End Sub 

Eine solche Prozedur starten wir, indem wir die Einfügemarke irgendwo innerhalb der Prozedur platzieren und dann eine der folgenden Aktionen ausführen:

  • Taste F5
  • Symbolleisten-Befehl Sub/Userform ausführen (F5)

Das Ergebnis siehst Du in Bild 2.

Einfache Ausgabe im Direktbereich

Bild 2: Einfache Ausgabe im Direktbereich

Einfache Ausgaben wie diese helfen Dir bei der Prüfung, ob eine bestimmte Stelle im Code überhaupt durchlaufen wird. In diesem Fall sehen wir klar, dass dies der Fall ist.

Debug.Print direkt im Direktbereich nutzen

Mit Debug.Print können wir nicht nur feste Ausdrücke, sondern auch den Inhalt von Funktionen oder Variablen ausgeben.

Und dazu müssen wir die Anweisung gar nicht von einer Prozedur aus ausführen. Wir können Debug.Print auch direkt im Direktbereich eingeben und ausführen. Wir können damit zum Beispiel eingebaute VBA-Funktionen ausprobieren.

Die folgende Anweisung, die wir direkt im Direktbereich eingeben und mit der Eingabetaste ausführen, gibt etwa das aktuelle Datum und die aktuelle Uhrzeit aus:

Debug.Print Now
08.02.2026 11:27:31

Es gibt sogar eine Kurzform der Debug.Print-Anweisung, die wir allerdings nur im Direktbereich selbst nutzen können – das Fragezeichen (?). Hier geben wir die Nummer des Wochentags des aktuellen Datums aus (der zweite Parameter gibt den ersten Tag der Woche an):

  Weekday(Date,vbMonday)
  7 

Wir können auch noch eine weitere Funktion umschließen, um den Namen des Wochentags zu ermitteln:

  WeekdayName(Weekday(Date,vbMonday))
Sonntag

Variablenwerte mit Debug.Print ausgeben

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

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar