Excel VBA – Wie Sie Fehler in Ihren Makros finden

Wie Sie Fehler in Ihrem VBA Makro finden

Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.
Um Fehler in Ihren VBA Makros zu finden, ist es wichtig, die Anweisungen im Code Schritt für Schritt durchzugehen. So können Sie nachvollziehen wie das Ergebnis zustande kommt und sicherstellen, dass das Makro das macht, was Sie wollen.

111 VBA Makros die Ihr Leben leichter machen. Egal ob Sie Einsteiger oder fortgeschrittener Anwender sind – in diesem Buch finden Sie Lösungen für Ihre alltäglichen Aufgaben. Keine Vorkenntnisse notwendig.

Diesen Vorgang nennt man Debuggen. In diesem Beitrag zeige ich Ihnen wie Sie dabei vorgehen. Excel stellt verschiedene Möglichkeiten bereit, die Änderungen der Werte während des Programmablaufs nachzuverfolgen.

Stellen Sie zunächst sicher, dass der Direktbereich und das Lokal-Fenster eingeblendet sind. In diesen werden die aktuellen Werte der Variablen angezeigt. Dies können Sie über den Menüpunkt Ansicht steuern.
Direktfenster und Lokal-Fenster einblenden
Blenden Sie außerdem die Symbolleiste Debuggen ein, um den Programmablauf steuern zu können. Sie gelangen dorthin über den Menüpunkt AnsichtSymbolleisten.
Debugger Leiste in Excel einblenden

Nun kann es losgehen. Ich möchte den Prozess des Debuggens anhand des folgenden Beispiels erläutern:

Function MappeEx(strName As String) As Boolean

MappeEx = False
MappeEx = Dir(strName) <> ""

End Function

Sub TestDatei()
Const Datei = "C:\TestMappe.xlsx"

Debug.Print Datei

If MappeEx(Datei) = True Then
MsgBox "Die Datei existiert"
Else
MsgBox "Die Datei existiert nicht"
End If
End Sub

Wir haben eine Funktion die durch ein Makro aufgerufen wird. In der Funktion MappeEx wird geprüft, ob eine bestimmte Datei existiert. Die Funktion selbst wird durch das Makro TestDatei aufgerufen. In diesem Makro wird auch der Name der zu suchenden Datei bestimmt.

Rufen Sie bitte über die Tastenkombination ALT+F11 die Entwicklungsumgebung auf, legen Sie ein neues Modul ein und kopieren Sie den Code hinein.

Um in den Debugger-Modus zu springen wird ein Haltepunkt benötigt. Wie der Name schon andeutet, unterbricht dieser den Programmablauf und hält das Makro an einer bestimmten Stelle an. Diese Stelle können Sie selbst bestimmen.


Unternehmensplanung mit SAP BPC

111 VBA Makros die Ihr Leben leichter machen

Wollen Sie Ihre langweiligen Routineaufgaben loswerden? Möchten Sie Excel an Ihre Bedürfnisse anpassen, Berechnungen automatisieren, eigene Dialogfelder erstellen und vieles mehr? Dieses Buch zeigt Ihnen, wie Sie Ihre Aufgaben schnell und einfach mit VBA erledigen.

Um einen Haltepunkt zu setzen, können Sie einfach auf die Leiste links vom Code klicken.
Haltepunkt gesetzt
Alternativ können Sie den Haltepunkt auch über die Debugger-Leiste setzen oder die Taste F9 drücken.
Haltepunkt setzen

Wenn Sie nun das Makro mit der Taste F5 starten, hält das Makro an dieser Stelle an. Sie haben drei Möglichkeiten zur Navigation, die sogenannten Schritte:

  • Einzelschritt (F8)
  • Prozedurschritt (SHIFT+F8)
  • Prozedur abschließen (STRG+SHIFT+F8)

Mit dem Einzelschritt gehen Sie die Anweisungen im Code Schritt für Schritt durch. So können Sie mit der folgenden Anweisung den Inhalt der Konstante Datei im Direktbereich ausgeben:

Debug.Print Datei

Ausgabe im Direktbereich

Gleichzeitig wird der Wert im Lokal-Fenster angezeigt.
Lokal-Fenster

Sie können aber auch einfach die Maus über die jeweilige Variable halten und so den Wert dieser Variable einsehen.
Der Wert der Variable wird angezeigt

In der nächsten Zeile wird der Unterschied zwischen dem Einzelschritt und Prozedurschritt deutlich. Wenn Sie den Einzelschritt benutzen, springen Sie in die aufgerufene Funktion MappeEx. Das Debugging wird dann in der Funktion fortgesetzt. Somit laufen Sie Gefahr, sich in Tiefen des Codes zu verlieren. Wenn Sie jedoch den Prozedurschritt benutzen, bleiben Sie auf der Ebene Ihres Makros und das Ergebnis der Funktion wird angezeigt.

Falls Sie sich mit dem Einzelschritt verirren, finden Sie über die Taste Prozedur abschließen wieder zurück zu Ihrem Makro, auf die Oberfläche.

Anstatt einen Haltepunkt zu setzen können Sie auch einen sogenannten Überwachungsausdruck verwenden. Damit wird die Programmausführung automatisch angehalten, wenn eine Variable einen bestimmten Wert annimmt oder sich ändert. Nutzen Sie dazu den Menüpfad DebuggenÜberwachung hinzufügen.
Überwachung hinzufügen

Hier können Sie den Ausdruck und die Art der Überwachung festlegen. In unserem Beispiel wollen wir die Programmausführung unterbrechen, wenn der Wert MappeEx der Prozedur MappEx sich ändert.
Unterbrechen wenn Wert geändert wurde
Wenn Sie nun alle Haltepunkte löschen und das Makro mit der F5 Taste starten, springt die Ausführung in den Debuggermodus und zwar an der Stelle, an der sich der Wert MappeEx geändert hat.
Die Beispiel Excel Datei mit dem sofort einsetzbaren Makro und 111+ andere Makros, die Ihr Leben leichter machen, finden Sie hier.

Beeindrucke deinen Chef mit coolen Excel Tricks!

  • Lasse dich von deinen Kollegen nicht abhängen!
  • Spare Zeit und nutze diese für angenehmere Dinge
  • Steigere deine Produktivität und Effizienz
  • Es ist leicht - In meinem Newsletter gebe ich Schritt für Schritt Anleitungen die jeder versteht
  • Bei der Anmeldung zu meinem Newsletter erhälst du das Buch „Excel Tricks die deinen Chef beeindrucken“ als Willkommensgeschenk.
20 Excel Tricks

Jetzt anfordern!

* Pflichtfeld
 
Kein SPAM. 100% sicher.

Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.

Bildquelle: Pixabay, CC0 Public Domain

3 Kommentare
  1. Andrew Scoins
    Andrew Scoins sagte:

    Hallo Herr Reis,
    Ich habe eine userForm gestaltet.
    Jetzt hab ich folgendes problem.
    Ich bekomme die inhalte der 18 Spalten aus *Tabelle1 nicht in die *ListBox1 der *UserForm1 können sie mir einen Tipp geben wie ich das anstellen kann.

    * Das sind vordefinierte Namen von excel in meiner Datei diese habe ich auch nicht geändert
    Die Daten Fangen in Zeile 2 an.
    Zeile 1 sind die Überschriften.
    Wie lade ich die ListBox1 neu wenn ich einen Datensatz aus der Tabelle Lösche.

    Freundliche Grüße
    A.Scoins

    Antworten
      • Andrew Scoins
        Andrew Scoins sagte:

        Hallo Her Reis,

        Das Problem habe ich mittlerweile gelöst hab das über das Eigenschaftsfenster gelöst.

        Kann ich ihnen vielleicht meine UserForm mal senden das sie sich diese mal ansehen könnten ich hab auch ein Word Dokument wo die Erklärung drin stehen würde ich bräuchte nur ihre aktuelle E-Mailadresse.
        Es wäre echt super wenn sie mir helfen könnten.

        Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar zu Denis Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.