TOP

VBA-Lektion 2. Debugger (Debugger)

Ein Tool in der VBA-Umgebung zum Debuggen von Programmcode. Die Fähigkeit, mit einem Debugger zu arbeiten, ist für jeden, der auf VBA schreibt, von entscheidender Bedeutung. Es wird benötigt, um die Funktionsweise Ihres Codes zu überprüfen und Fehler darin zu finden und zu beheben.


Öffnen Sie Visual Basic Editor (Alt+F11). Erstelle darin ein Modul und schreibe folgenden Code:

 Sub LearningDebug()
    Dim A As Long, B As Long, C As Long, D As Long

    D = 0
    A = 10
    Debug.Print "A = " + Trim(Str(A))
    B = 15
    Debug.Print "B = " + Trim(Str(B))
    C = A + B
    Debug.Print "C = " + Trim(Str(C))
    C = Round(C / 5)
    Debug.Print "Divide С by 5: C = " + Trim(Str(C))  'C wird durch 5 geteilt: C =
    C = Round(C / D) 'Hier liegt ein Fehler vor, da eine Division durch Null nicht möglich ist (und D = 0).
End Sub

Drücken Sie Strg+G und das Fenster Immediate wird unten angezeigt. In diesem Fenster können Sie während der Ausführung des Makros die Werte von Variablen ändern und anderen Code auf VBA ausführen, der zuvor nicht in das Modul geschrieben wurde.

Wenn Sie den Cursor innerhalb des Codes des Moduls platzieren und F5 drücken, wird es vollständig ausgeführt. Wenn Sie F8 drücken, wird nur eine Codezeile ausgeführt. Beim nächsten Drücken von F8 wird die nächste Codezeile ausgeführt und so weiter. Sie können den gesamten Code schrittweise durchgehen. Mit der F9-Taste können Sie einen Haltepunkt erstellen. Wenn Sie den Code dann mit F5 ausführen, wird der Code bis zur angegebenen Zeile ausgeführt und dann angehalten. Anschließend kann mit den zuvor beschriebenen Tasten F5 oder F8 fortgefahren werden.

Wenn Sie sich den Code genau ansehen, werden Sie feststellen, dass den Variablen A, B, C, D Nummern zugewiesen sind. Die Debug.Print „text“-Zeilen drucken den von uns angegebenen Text in das zuvor geöffnete Immediate-Fenster, um zu sehen, was mit der Variablen passiert. Str(A) wandelt eine Zahl in einen Textwert um. Und Trim() entfernt Leerzeichen rechts und links davon. Der Operator Round(С) rundet den Wert gemäß den Regeln der Arithmetik auf eine ganze Zahl (daher weisen wir das Ergebnis der Berechnung einer ganzzahligen Variablen Long zu, was bedeutet es muss eine ganze Zahl sein). Am Ende des Codes haben wir speziell eine falsche Situation erstellt, um die Verwendung des Debuggers zu üben.

Stellen Sie sich in den Code und drücken Sie viermal F8. Die Zeile, die als nächstes ausgeführt wird, wird gelb markiert. Bewegen Sie den Mauszeiger über die verschiedenen Variablen. Gleichzeitig erscheint ein Popup-Fenster, in dem Sie deren Wert sehen können. Variablen, denen noch keine Werte zugewiesen wurden, sind gleich Null. Drücken Sie erneut F8. Im Fenster Immediate erscheint eine Zeile: A = 10 Jetzt können wir den Wert der Variablen A sofort im Fenster Immediate ändern (z. B. auf 8 ändern). Schreiben Sie dazu in eine neue Zeile des Fensters Immediate: A = 8 und drücken Sie Enter. Bewegen Sie nun den Mauszeiger über Variable A und sehen Sie, dass ihr Wert 8 ist. Um den Wert anzuzeigen, ohne den Mauszeiger zu bewegen, können Sie ihn im Fenster Immediate anzeigen lassen. Das geht so: Geben Sie in die leere Zeile des Fensters Immediate ein: ?A und drücken Sie Enter. Zeichen? im Fenster bedeutet Immediate dasselbe wie Debug.Print im Code. Es ist einfach einfacher und kürzer, auf diese Weise zu schreiben. Sie sehen sofort die Nummer – das Ergebnis Ihrer Anfrage.

Platzieren Sie den Cursor auf der letzten Codezeile (C = Round (C / D)) und drücken Sie F9. Es erscheint ein Haltepunkt. Sie können es mit derselben Schaltfläche entfernen, wir werden es jedoch noch nicht entfernen. Drücken Sie F5, das Programm führt alle Zeilen aus und stoppt bei der letzten. Im Fenster Immediate werden Meldungen zum Zuweisen von Werten zu Variablen angezeigt. Wir haben die letzte Codezeile erreicht. Es sollte einen Fehler auslösen, da es eine Division durch Null enthält. Drücken Sie F8 und überzeugen Sie sich selbst. Klicken Sie im angezeigten Fenster auf Debug. Wenn Sie End drücken, wird die Ausführung des Programms gestoppt und wir möchten es beenden.

Sie können die Situation korrigieren, indem Sie den Wert der Variablen D ändern. Jetzt ist er gleich Null. Geben Sie im Fenster Immediate den Text D = 2 in eine leere Zeile ein und drücken Sie Enter. Mit der letzten Codezeile dividieren wir nun nicht durch Null, sondern durch 2 und vermeiden so einen Fehler. Drücken Sie F5 und das Programm wird seine Arbeit ohne Fehler abschließen.

Versuchen Sie, den Code zu ändern und üben Sie die Verwendung des Debuggers. Glauben Sie mir, es wird Ihr Leben viel einfacher machen.