Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel: Eigene Funktionen mit VBA erstellen

Programmcode debuggen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Zum Testen Ihrer Programme lässt sich der Einzelschrittmodus (Debugger) im VBA-Editor verwenden. So können Sie bei Schleifen und Verzweigungen den Ablauf kontrollieren und auch den Wert der Variablen einsehen.
09:34

Transkript

Vielleicht möchten Sie wissen, wie so ein Programm funktioniert. Vielleicht möchten Sie so ein Programm visualisiert haben, das heißt, vielleicht möchten Sie ganz gerne sehen, wie so ein Programm Schritt für Schritt abläuft, wie so eine Schleife intern funktioniert, oder eine Verzweigung, oder, oder. In diesem Video zeige ich Ihnen, wie man das zeigen kann, oder ganz genau ich zeige Ihnen die Technik des Debuggens, die nötig ist um fremde Programme zu verstehen, aber auch um in eigenen Programmen Fehler zu suchen. Erinnern Sie sich noch an die Schule? An Primzahlen? Ist das lange her! Klar, Primzahlen, wir erinnern uns, Primzahlen sind Zahlen, die durch 1 und durch sich selbst teilbar sind. Beispielsweise 2, 3, 5, 7, 11, 13. Die 9 ist keine Primzahl, weil die 9 hat als Teiler 1, 3 und sich selbst. Ganz kurz gesprochen, wenn Sie fragen, wer braucht den Primzahlen? In der Verschlüsselungstechnik werden Primzahlen verwendet, weil es kein Primzahlenmuster gibt und weil umgekehrt auch nicht erkennbar ist, ob auf ein Blick eine Zahl eine Primzahl ist, oder ob eine Zahl Teiler hat. Das soll uns nicht interessieren. Mir geht es hier um VBA, mir geht es natürlich später um Funktionen. Dazu habe ich ein Programm geschrieben. Das heißt hier Sub Primzahlenberechnung. Zwei Variablen werden deklariert, eine Angabezahl-, eine Zähler-Variable und Anwender, Anwenderin wird aufgefordert, lngEingabezahl, in eine Inputbox eine Eingabezahl einzutragen. Ich sehe, ich habe mich hier noch vertippt: Bitte Geben Sie eine Zahl ein, von der berechnet werden soll, ob es sich um eine Primzahl handelt. Ich will wissen, ist die 17 eine Primzahl, oder die 1.017, oder die 3.789 und so weiter. Damit ich das herausbekomme, muss ich mit einer Schleife, muss ich mit einer Zähler-Schleife beginnend bei 2, Achtung nicht bei 1, 1 ist ja immer Teiler, muss ich bei 2 am besten hochzählen, 2, 3, 4, 6, bis zu der Zahl selbst. Gibt es eine Zahl, die meine angegebene Zahl teilt? Muss ich alle Zahlen testen? Nein, ich kann bei der Wurzel der Zahl aufhören und Wurzel heißt square root. Woher weiß er denn das? Antwort: Dafür gibt es in VBA eine hübsche kleine Liste, die ich Ihnen hier in diesem Zusammenhang zeigen möchte. Es gibt einen sogenannten Objektkatalog, den Sie über Ansicht Objektkatalog, es gibt auch eine Taste dafür, Ansicht Objektkatalog finden. Nicht erschrecken, nicht verzweifeln, was Sie hier sehen. Wir brauchen hier, um in unsere VBA- Funktion zu gelangen, nur die Bibliothek. VBA Und die ist doch hübsch recht übersichtlich und Sie ahnen es, Wurzel, was heißt, Wurzel, bitte schön? steckt in der Kategorie Mathematik und in Mathematik so viele Funktionen gibt es nicht. Da gibt es ein Kosinus, eine Exponentialfunktion, ein Logarithmus, Randomize, eine Zufallsfunktion, hier ist Round Signum, eine Ganzzahlberechnung und hier wäre square root, geschrieben Sqr, nicht Sqrt, und so kriege ich aus, wie die Funktion heißt. Wenn Sie nicht wissen, was ein Sinus tut, klicken Sie auf die Funktion, drücken Sie die Hilfe F1 und bekommen Sie Information über die Funktion. Oder noch ein Beispiel in Interaction da finden Sie die Befehle wie Messagebox, Inputbox, die kenne ich doch alle. Klar! So finden Sie die internen VBA-Funktionen. Schließen wir das Ganze und so habe ich natürlich auch herausbekommen, was heißt Wurzel, was heißt square root, das heißt, ich lasse den Zähler von 2, 3, 4 bis Wurzel dieser Zahl überprüfen. Wenn die eingegebene Zahl den Zähler teilt, oder ganz genau, wenn sie ihn Rest 0 teilt, wenn sie ihn ohne Rest teilt, Modulo übersetze ich auf Deutsch mit Rest, mit meiner Funktion Rest, dann weiß ich, die eingegebene Zahl ist keine Primzahl es gibt ein Teiler und melde eben einen dieser Teiler, ich will nicht alle wissen, ich will nur einen wissen, und sage, das ist einer der Zähler von unserer Zahl. Ich beende das Programm, Exit sub. Ich will hier nur wissen, du Primzahl, bist du eine Primzahl oder bist du eben keine? Nachdem ich alle Zahlen hier abgecheckt habe, For ... Next, außerhalb der Schleife weiß ich, die Zahl, die ich eingegeben habe ist doch eine Primzahl, es handelt sich hierbei um eine Primzahl. Erster Schritt wir testen das Programm einfach mal mit einfachen Zahlen, beispielsweise die 13 ist natürlich eine Primzahl. Oder nochmal testen, ich versuche mal die15. Es ist natürlich klar, 15 ist keine Primzahl. Den ersten Teiler, den er findet, ist die 3, den 5 findet er schon gar nicht mehr. Bei der 3 hört er hier schon auf. Ja und jetzt unser Thema, wie läuft denn das Programm? Wie funktioniert das Programm? Ich möchte das Programm ganz gerne sehen. Dazu gibt es ein Debugger. Der Begriff Bug, Wanze oder Käferchen, ist mit einem Augenzwinkern zu verstehen. Das war früher vor einigen Jahrzehnten, als die Ingenieure noch Käfer, Wanzen, Motten, Dreck in ihren Relays, in ihren riesengroßen Computern gesucht haben, dort sind die auf die Suche nach Bugs gegangen und haben eben diese Bugs gesucht und es hat sich herzhaft immer noch gehalten, wir suchen mal unsere eigenen Fehler. Hier ist natürlich kein Fehler drin, aber ich möchte zeigen mit dem Debugger, wie lasse ich das Programm im Einzelschritt hier durchlaufen. Debuggen Einzelschritt. Er beginnt ganz oben. Noch mal Debuggen Einzelschritt. Debuggen Einzelschritt. Ich versuche mal eine Zahl, wie wäre mit der 17, ok. Debuggen Einzelschritt und jetzt wird mir das zu doof, jedes Mal muss ich hier drauf klicken. Deshalb merke ich mir die zweite wichtige Taste F8, neben F5 für Ausführen, Starten, habe ich mir auch noch F8 gemerkt, für bitte teste mal das Programm Einzelschritt F8. F8, F8, F8, F8 und Sie sehen jetzt schon im Hintergrund, was er tut, er läuft Schritt für Schritt durch und ich sehe genau, wie die Schleife und die Verzweigung innerhalb des Programms durchlaufen werden, wo er beendet, wo er reinspringt, was er gerade tut. Eine zweite wichtige Sache des Debuggers ist, sobald ich eben in diesem Debug-Modus, in diesem Einzelschritt-Modus gelange, kann ich mit der Maus über eine der Variablen drüberfahren und sehe, diese Variable hat die Zahl 3, diese Variable, stimmt, die 17 wollte ich ja testen, die Variable hier, ist immer noch die 17, klar, natürlich, kann ich alle meine Variablen hier schon mal anschauen, welchen Wert hat diese Variable übernommen. Ich lasse es nochmal ein bisschen weiterlaufen F8, F8, F8. Wo sind wir jetzt? Jetzt ist mein Zähler schon bei der 4 4x4 ist 16, nein, er ist noch nicht bei der Wurzel angelangt. Jetzt schon. Jetzt greift er die nächste und springt aus der Schleife raus und meldet hier an der Stelle ist eine Primzahl. Hätte ich einen Fehler gemacht, das heißt, hätte ich mit vertippt, hätte ich eine falsche Variable verwendet, einen falschen Text geschrieben, eine Schleife falsch beendet oder eine Verzweigung falsch geschlossen, dann würde ich es hier an dieser Stelle mit dem Debugger sehr gut sehen, das heißt, sehr gut den Fehler lokalisieren können. Und neben dem Debugger- Einzelschritt-Modus, neben der Technik mit der Maus über die Variablen drüber zu gehen, verwenden viele auch das Ansicht Überwachungsfenster. Ich mache es immer ganz gerne, indem ich auf die Variable gehe mit der rechten Maustaste mir das Überwachungsfenster hinzufüge, Ok und so kann ich nämlich unten sehr schön, nochmal hier, Zähler, rechte Maustaste, Überwachungsfenster, Ok, den Inhalt der Variablen überprüfen, während mein Debugger, F8, F8, F8 läuft. Schauen wir es nochmal an, ich stoppe das Programm. Ich will wissen, ob die 25 und so weiter. Ich starte hier, 25, Ok. So wird er durchlaufen. Oder Debbugen Einzelschritt. F8, F8, 25. F8, F8 und Sie sehen jetzt hier unten, er testet die 2, die 3, die 4. Jetzt landet er genau bei der Wurzel, springt hier rein, meldet, Es ist keine Primzahl und stoppt das Programm, Exit Sub, weil das genau wollten wir wissen, und meine Mission ist erfüllt. Also merken Sie sich, zum Testen, zum Überprüfen ist der Debugger Einzelschritt ein wunderbares Mittel. Ich kann mit der Maus hier draufgehen. Ich kann mir unten das Überwachungsfenster herholen. Es gibt noch weitere Fenster, aber damit kommt man für das Erste ganz gut zurecht.

Excel: Eigene Funktionen mit VBA erstellen

Schreiben Sie Ihre eigenen Excel-Funktionen. Als erfahrener Excel-Anwender lernen Sie, wie Sie mithilfe von VBA Berechnungen mittels selbst erstellter Funktionen automatisieren.

3 Std. 4 min (33 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:21.01.2015

Im Training wird Excel 2013 benutzt. Die Vorgehensweisen sind aber für alle Windows-Versionen von Excel identisch und leicht übertragbar.

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!