Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Excel 2016 VBA für Profis

Programmablauf verfolgen

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Unabhängig davon, ob tatsächlich ein Fehler aufgetreten ist, lässt sich der Code an fast beliebiger Stelle unterbrechen. So erkennen Sie, ob Ihr Programm wie geplant arbeitet und alle Variablen die erwarteten Inhalte besitzen.

Transkript

Normalerweise möchten Sie Fehler gar nicht sehen. Aber wenn schon Fehler drinstecken, dann möchten Sie die gerne genau sehen. Im Moment haben wir eine Technik, die dafür sorgt, dass die Fehler entweder ignoriert und unauffällig behandelt werden oder dass der Code an eine Stelle springt, wo der Fehler dann gelöst wird. Um den Fehler aber zu verstehen, ist es oft hilfreich, ihm genau auf die Finger gucken zu können. Und das möchte ich Ihnen jetzt zeigen. Es beginnt damit, dass Sie an beliebigen Stellen sogenannte "breakpoints" setzten können. Vor irgendeiner Zeile, klicken Sie hier in diesen grauen Bereich und das können Sie beliebig, an vielen Stellen machen, nicht an allen, zum Beispiel in der Variablendeklaration geht es nicht, aber sagen wir mal, da überall wo es sinnvoll ist. Und wenn Sie die aufräumen wollen, ein zweites Mal draufklicken oder Sie können die auch alle gemeinsam aufräumen, alle Haltepunkte löschen, "breakpoint"/ Haltepunkt, ist das gleiche. Die haben den Vorteil, dass sie beim Speichern nicht mitgespeichert werden. Wenn Sie also zu Testzwecken ganz viele "breakpoints" drinhaben, oft auch in anderen Modulen, dann können Sie die nicht vergessen. Wohingegen der Befehl, der dazu gehört, der auch speicherbar wäre, gerne auch in der ausgelieferten Version noch drin ist, das ist dann sehr peinlich. Der mag durchaus sinnvoll sein, zum Beispiel, wenn Sie eine Schleife haben mit 300 Durchläufen und Sie wollen den 222ten testen, weil da immer irgendwas passiert. Dann möchten Sie nicht 221 mal weiterklicken, sondern dann würden Sie schreiben: "if int(anzahl) = 222", "then", ein "and if" und hier kommt dann dieser Befehl hinein, der für den "breakpoint" sozusagen steht: "stopp", der stoppt und er wird leider mitgespeichert. Das mag ein Vorteil sein oder auch nicht, aber jedenfalls ist es gefährlich und hier gibt es die Variable sowieso nicht, nur dass wir den Befehl schonmal benutzt haben. Im Normalfall würden Sie also, entweder hier auf "breakpoint" klicken oder das sehen Sie da oben: "Haltepunkt Ein/Aus", Sie können das auch mit der "F9" Taste umschalten. Und das bedeutet, wenn dieses Programmstück läuft, stoppt es vor der Zeile. Also ich kann ganz deutlich hier reinklicken, "F5" drücken und es wird gelb markiert und stoppt vor der Zeile. Und jetzt kommt die eigentliche Analyse, das heißt, ich kann zum Beispiel hier die Maus drüber schweben lassen und sehe dann den Inhalt dieser Variablen oder in diesem Fall Konstanten. Diese Variable hier ist noch auf "nothing". Es ist eine Objektvariable, "worksheet" nämlich und sie ist noch nicht gefüllt. Auch daran sehen Sie, dass das vor Ausführen dieser Zeile ist. Wenn ich mit "F8" einfach eine Zeile weitergehe, dann scheint die Information hier zu verschwinden, tatsächlich ist da jetzt soviel drin, dass es nicht angezeigt werden kann. Ich würde mir auch gerne dieses hier anzeigen lassen, "error number", aber da steckt noch nichts drin, was ich auswerten kann, deswegen kriege ich das nicht angezeigt. Trotzdem hat es schon einen Wert und den würde ich gerne sehen. Ich stoppe das Ganze also nochmal und werde jetzt mit "Alt+F11" erstmal dafür sorgen, dass hier dieses Infoblatt auch weg ist, damit auch ein Fehler auftaucht gleich. Und werde ein bisschen vorbereiten, was ich sehen möchte, zum Beispiel den Namen des Blattes. Ich habe mit "Doppelklick" jetzt dies beides markiert und werde per Rechtsklick eine "Überwachung hinzufügen". Diesen Dialog können Sie ungesehen mit "Ok" bestätigen normalerweise und es erscheint ein neues Fenster, wo diese ganzen Überwachungen jetzt aufgenommen sind. Es läuft noch nichts, deswegen ist es hier leer. Dort würde ich den Namen sehen. Und sehr viel schöner ist es, das werden Sie gleich sehen, ich nehme erst nochmal die "Err.Number" auf, auch Doppelklick und Rechtsklick "Überwachung hinzufügen" und "Ok". Sehr viel schöner als diese konkreten Methoden oder Eigenschaften sind Objekte, also "wksInfo" alleine zum Beispiel, das werde ich ebenfalls hinzufügen. Das kann man schon machen, ohne dass das Programm läuft, das geht auch im laufenden Betrieb. Und jetzt werde ich mit "F5" das Programm starten. Sie sehen schon die "Err.Number" ist im Moment auf "0", es gibt keinen Fehler, "wksInfo" ist auf "Nothing", deswegen kann ich auf untergeordnete Objekte nicht zugreifen, das kann man so ein bisschen runterschieben, dann ist der spannende Teil hier drin nämlich besser zu lesen. Und das gibt im Moment kein "info", das heißt, wenn ich mit der "F8" Taste weitergehe, dann wechselt die Fehlermeldung von "0" auf "9". Es geht also in diesen "if End if"-Block und wenn ich jetzt "Err.Clear" ausführe, dann wird der Fehler gelöscht, also "F8" und jetzt ein neues Blatt angelegt, nochmal "F8" und Sie sehen jetzt erstens, dass das neue Blatt auch direkt erzeugt und sichtbar wird, deswegen muss das "Workbook_SheetActivate" ausgeführt werden. Da werde ich jetzt einmal kurzfristig mit "Debuggen" "Prozedur abschließen" durchspringen. Das will ich gar nicht im Detail sehen. Dann bin ich wieder in meinem Code. Was ich nämlich sehen will, ist das hier "Tabelle 4", der vorläufige Name ist für das neue Blatt und jetzt hinter "wksInfo" eine große Struktur steckt. Da muss man ein bisschen Platz schaffen. Da kann ich jetzt also alles einzeln nachgucken. Die sind alphabetisch, also auch "Name" ist hier drin, was ich einzeln habe, aber ich kann dort, wenn ich überlege, ob da eine Bereichsnamen "Names"-Auflistung drin ist, nachgucken: Aha, die hat den Wert "0", es gibt also keine Bereichsnamen da drin und alles Mögliche, was da drin steckt, kann ich nachgucken, auch mit untergeordneten Objekten. Das klapp ich jetzt wieder ein, das ist ein sehr, sehr praktischer Inspektor hier für alle Objekte. Also typischerweise "worksheets", "cells" oder "range" oder sowas. Diese einzelnen Eigenschaften sind sehr schön, wenn man nicht alle 500 Details hier angucken will, sondern wirklich nur die eine Eigenschaft wissen will, aber wenn man verschiedene Werte nachgucken muss, ist das sehr viel praktischer. Sie sehen jetzt, wenn ich mit "F8" die nächste Zeile ausführe, dass der Name von vorher "Tabelle 4" jetzt auf "Info" wechselt. Und dann mit "F8" oder wenn Sie wollen, können Sie auch den Rest direkt mit "F5" durchlaufen lassen, ist das Programm fertig. Also, die Technik mit diesen "breakpoints" und dort mit den Überwachungsausdrücken oder wenn Sie die Maus hier drüber liegen lassen, ist sehr praktisch, um dem Programm während der Ausführung zuzugucken. Das trifft oftmals nicht nur das Programm, also diese Prozedur alleine, sondern auch Unterprozeduren. Typischerweise haben Sie sowas wie: "Ich bin eine Unterprozedur". Die macht natürlich irgendetwas sinnvolleres. Im Moment macht sie einfach nur: "Debug.Print Hallo" Und die wird irgendwo aufgerufen, sagen wir mal hier. Mit Strg+Leertaste kann ich das ergänzen lassen und ich setze den "breakpoint" mal hierhin oder wir machen es mal ruhig anders, dann haben Sie das auch schonmal gesehen. Und zwar will ich mit "Debuggen" direkt "Ausführen bis Cursor-Position". Das ist sozusagen der "breakpoint", ohne dass man ihn sieht. Also, bis hier ist alles ausgeführt, das wird noch nicht ausgeführt und normalerweise würde es mit "F8" jetzt hier durchwandern. Genau das ist eben schon passiert, mit dem "SheetActivate". Das will ich nicht, ich gehe also einfach nochmal, indem ich diesen Cursor, diesen gelben hier, verschiebe, mit gedrückter Maustaste. Ich sag mal, ich fang da nochmal an. Das geht, mitten im laufenden Betrieb mit "F8" weiter und jetzt weiß ich, diese Unterprozedur ist völlig unkritisch, die will ich, alle 50 Zeilen, die da drin sind, einfach nur erledigt haben. Dann rufe ich gezielt dieses "Prozedurschritt" auf. Also Shift+F8 und dann geht er weiter ohne das einzeln zu betreten. Das ist sehr praktisch, weil Sie sehr oft Unterprogramme aufrufen und von denen wissen, dass die in Ordnung sind. Und jetzt kann ich es mit "F5" abschließen. Also, die ganzen Tastenkürzel, die hier drin stehen, sind enorm praktisch, um zwischendurch zu gucken und wenn Sie unterbrochen haben, nur dann wird hier etwas angezeigt, können Sie Überwachungsausdrücke hier angeben und so wie sie markiert sind, mit der Entfernen-Taste auch wieder loswerden, denn die kosten ein bisschen Ablaufzeit und zur Not auch hier wieder schließen, sodass Sie Ihrem Programm wirklich während der Arbeit zugucken können und damit auch die Fehler sehr viel besser finden.

Excel 2016 VBA für Profis

Nutzen Sie die Möglichkeiten der Programmiersprache VBA in Excel 2016, um eigene Dialoge zu erstellen, auf andere Arbeitsmappen zuzugreifen und wichtige Funktionen einzusetzen.

5 Std. 52 min (55 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.01.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!