So debuggen Sie ein Excel VBA-Makro, das nicht funktioniert. In Excel VBA gibt es erstaunliche Tools, mit denen Sie den aktuellen Wert sehen können, der in Variablen gespeichert ist, während Sie den Code zeilenweise durchlaufen. Wenn Sie ein Makro haben, das nicht funktioniert,
Schau Video
- Sie haben ein Excel VBA-Makro, das nicht funktioniert
- VBA verfügt über erstaunliche Debugging-Tools
- Anstatt Ihren Code auszuführen, können Sie den Code mit F8 durchlaufen
- Die gelbe Linie ist die Linie, die gerade ausgeführt wird
- Bewegen Sie den Mauszeiger über eine Variable, um den Wert dieser Variablen anzuzeigen.
- Wechseln Sie zu Excel hin und her, um zu sehen, was gerade passiert
Video-Transkript
Lernen Sie Excel aus Podcast, Episode 2096: Debuggen des VBA-Makros
Hey, willkommen zurück bei Netcast, ich bin Bill Jelen. Die heutige Frage: Jemand hatte einen Code, den ich in einem alten YouTube-Video gepostet habe, und sie haben einen Kommentar gepostet: „Ah, das funktioniert nicht. Die doppelte Rechnung wird nicht gespeichert, es wird jedoch kein Fehler ausgegeben. “ Ich weiß nicht, was mit dem Code falsch ist. Okay, wissen Sie, es gibt großartige Tools, die verfügbar sind, wenn Ihr VBA-Makro nicht funktioniert. Wir haben hier also eine Schaltfläche, auf der Code ausgeführt werden soll. Ich werde das Makro zuweisen, es heißt SaveInvoice. Ich klicke auf Bearbeiten und wir sind in VBA vorbei. Und normalerweise wird dieser Code nur ausgeführt, wenn wir diesen Knopf drücken. BAM! Als ob alles sehr schnell gegangen wäre, aber man kann nicht sehen, was passiert.
Unter den Debug-Tools ist Debug Step Into eine meiner Lieblingsbeschäftigungen. Sie werden sehen, dass die Tastenkombination F8 ist und wir den Code zeilenweise ausführen können. Also habe ich dort F8 gedrückt und dies ist - die Zeile in Gelb ist die Zeile, die ausgeführt werden soll. Wenn ich also F8 drücke, springt es über diese beiden Deklarationen und jetzt machen wir eine ActiveSheet.Copy. Was hier wirklich schön ist, ist, wissen Sie, besonders wenn Sie einen großen Monitor haben, dass das Podcast-Fenster viel zu klein ist, aber Sie können das Makro laufen sehen. Im Moment geht es also um ActiveSheet.Copy. Im Moment bin ich in einer Arbeitsmappe namens Podcast 2096. Hier ist ein Arbeitsblatt namens Rechnung. Wenn ich F8 drücke, werden Sie sehen, dass ich jetzt in einer brandneuen Arbeitsmappe namens Buch2 bin und wir haben nur die Rechnung, in Ordnung.
Und jetzt werden wir New FN dieses große, lange Ding zuweisen. Drücken Sie F8. Okay, jetzt sah es nicht so aus, als wäre hier etwas passiert, weil hier nichts passiert ist. Aber hier ist das Schöne: Ich habe dieser Variablen namens New FN jetzt etwas zugewiesen. Wenn ich mit der Maus über New FN schwebe, wird ein kleiner Tooltip angezeigt, der mir zeigt, was in New FN gespeichert ist. Es wird also der Dateiname gespeichert. Dort befindet sich der Ordner, in den er verschoben werden soll. Es heißt Invoice1234, weil es den Wert von F4 übernommen und dann PDF hinzugefügt hat.
In Ordnung, eines der frustrierendsten Dinge an Excel ist, dass dieser Tooltipp nicht angezeigt werden soll, wenn Ihr Speicher knapp wird. Sie werden dort schweben und nichts wird passieren. Manchmal muss man hier klicken, um es wieder gut zu machen, und manchmal wird es überhaupt nicht angezeigt. Wenn es überhaupt nicht angezeigt wird, können wir Strg + G drücken. Strg + G ist das unmittelbare Fenster und dann werden wir verwenden? Dies ist die Verknüpfung für Debug.Print, NewFN. Mit anderen Worten, sagen Sie mir, was in New FN enthalten ist, und es zeigt Ihnen, was genau dort in New FN enthalten ist.
Okay, jetzt führen wir diese Codezeile aus, mit der ein PDF erstellt wird. Okay, also drücke ich F8. Okay, und zu diesem Zeitpunkt sollten wir ein neues PDF mit 1234 da draußen haben. Wenn ich in den Ordner schaue, wurde Inv1234 am 11. Mai um 6:25 Uhr erstellt. Genial, oder?
Okay, jetzt kommen wir an den Punkt, an dem wir das Problem haben. Okay, also drücken wir hier F8 und es wird als doppelte Kopie angezeigt. Okay, das hat funktioniert. Und dann F8, und wir können sehen, was in New FN ist. Okay, es hat also DupInv1234.pdf und Sie können sogar hierher zurückkehren und einfach nach Print NewFN klicken und dann werden Sie sehen, dass wir den Dateinamen geändert haben, okay. Also ist alles cool. Und dann drücken wir F8, um das Erstellen der PDF-Datei auszuführen. Genial! Alles sieht gut aus, oder?
Kehren Sie also zu unseren Podcast-Dateien zurück. Okay, aber anstatt etwas namens DupInv1234 zu haben, weiß ich einfach nicht, wie etwas namens Book2 heißt. Okay, es wurde erst vor einer Minute erstellt. Dies muss derjenige sein, aber gee! Es scheint der falsche Name zu sein. Also gut, wir kommen zurück zu VBA und ich weiß, dass ich New FN so den richtigen Wert zugewiesen habe. Und mal sehen, wie wir es speichern. Wir speichern es als NewFN1, das leer ist. und da es leer ist, bedeutet dies, dass der Dateiname verwendet wird, der in diesem Fall Book2 ist, da ich eine Kopie davon erstellt habe. Und es geändert - Oh schau! Hier habe ich NewFN den Namen zugewiesen und dann dieses NewFN1 gespeichert, und jetzt, weil ich debugge und schwebe - Schweben ist das Beste, was es je gab. Ich werde hoffentlich herausfinden können, was los ist.Also komme ich zurück und ändere das NewFN1. Hier ist das Tolle. Okay, also habe ich diese Zeile in Macro bereits passiert, aber ich kann sie wieder nach oben ziehen und sagen, okay, lass uns das noch einmal ausführen F8. Und jetzt erstellen wir das PDF. Okay, und da taucht es mit dem richtigen Namen auf und alles ist cool.
Okay, jetzt wo ich weiß, dass ich fertig bin, ist alles großartig. Von hier aus wird alles funktionieren. Ich klicke einfach auf Ausführen und es wird bis zum Ende des Codes ausgeführt. Okay, manchmal haben Sie ein langes Makro mit Hunderten von Codezeilen, die funktionieren, und dann einem bestimmten Teil, der nicht funktioniert, okay? Daher wurden hier nur einige andere Tools erwähnt. Wenn Sie über eine ganze Reihe von Codes springen und alles bis zu diesem Punkt ausführen müssen, können Sie dies tun, indem Sie hier klicken und einen Haltepunkt erstellen. Okay, jetzt, wenn ich das mache, läuft alles bis zu diesem Punkt. Ich kann einfach auf Ausführen klicken und es wird angehalten. Wenn Sie nicht einmal einen Haltepunkt festlegen möchten, klicken Sie einfach hier und sagen Debuggen, Zum Cursor ausführen. Zum Cursor ausführen.Jetzt weiß ich, dass dies hier ein Problem verursachen wird, da ich den Code zum Ändern dieser Rechnungsnummer noch nicht angeschlossen habe. Also gebe ich einfach eine neue Rechnungsnummer ein und bin jetzt in dieser Zeile. Debuggen, Zum Cursor ausführen, Strg + F8. Okay, jetzt lief alles bis zu diesem Punkt runter und wir sollten sehen können, dass es gerade Inv1235 erstellt hat, okay. Und jetzt geht es darum - wir sind in dieser Codezeile. Ich kann entweder entweder F8 drücken, um eine Zeile auszuführen, oder den Rest des Weges ausführen. Und da ist unser DupInv1235, okay? Die Debug-Tools hier in VBA sind also fantastisch. Lassen Sie uns einen Code zeilenweise ausführen und Ihren Bildschirm so anordnen, dass links sowohl der ausgeführte Code als auch die Ergebnisse des Codes angezeigt werden. Und Sie wissen hoffentlich, dass Sie herausfinden können, was mit dem Code falsch läuft.
Okay, also Episodenrückblick: Haben Sie ein Excel VBA-Makro, das nicht funktioniert. Es hat erstaunliche Debugging-Tools. Anstatt Ihren Code auszuführen, können Sie den Code mit F8 durchlaufen. Die gelbe Linie ist die Linie, die gerade ausgeführt wird. Sie können mit der Maus über die Variable fahren, um den Wert dieser Variablen anzuzeigen, und zu Excel wechseln, um zu sehen, was passiert.
Nun, hey, ich möchte Ihnen dafür danken, dass Sie vorbeigekommen sind. Wir sehen uns beim nächsten Mal für einen weiteren Netcast von.
Download-Datei
Laden Sie die Beispieldatei hier herunter: Podcast2096.xlsm