Excel 2013 VBA Grundkurs

Deklaration lokaler Variablen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Eine Variable sollte immer den kleinstmöglichen Gültigkeitsbereich und damit die geringste "Sichtbarkeit" haben. Das schützt Ihren Code davor, dass Variablen versehentlich von anderen Prozeduren verändert werden.

Transkript

Um Ihnen zu zeigen, wie Sie jetzt mit Variablen arbeiten, die also wirklich mal deklarieren, werde ich ein neues Modul öffnen und erstellen. Dazu werde ich auch die alten schließen, einfach nur wegen der Übersicht. Das ist hier einfach das untere, nämlich das Fensterschließkreuz, und da ist auch noch ein Test übrig. Alle Module sind ja in der Datei enthalten, werden also mit der Excel-Datei gespeichert. Da gibt es ein neues Modul. Und ich werde das mal wieder vernünftig benennen. Also, modDeklaration und mit Return bestätigen, dann kriegt es den Namen. Hier kann ich jetzt eine neue Prozedur erfinden. Die nenne ich mal ganz lieblos Sub Test01 mit dem Return dahinter werden die fehlenden Parameterklammern ergänzt und ein End Sub. Alles dazwischen wird bei mir eingerückt, also mit der Tab-Taste um vier Zeichen verschoben. Jetzt kommt die eigentliche Deklaration. Also mit dem Schlüsselwort Dim weil ja Platz dimensioniert, im Speicher frei gehalten wird. Dim, dann kommt der Name meiner Variablen. Die soll ungarisch notiert sein. Das heißt, ein bisschen vernünftig: intTest Und dann kann ich auch den Datentyp direkt dahinter schreiben, nämlich As Integer. Und Sie sehen schon, während ich losschreibe, werden schon bestimmte Sachen angeboten, im Wesentlichen, Datentypen. Wenn ich jetzt weit genug eingegrenzt habe, welches Wort ich meine, kann ich entweder mit einem Doppelklick der Maus. Das ist aber mühsam, weil ich gerade die Finger an der Tastatur habe. Oder mit der Tab-Taste, das auswählen. Ich wähle nicht mit der Return-Taste aus, das gibt nämlich eine neue Zeile. Wäre an dieser Stelle in Ordnung, an vielen anderen aber nicht. Muss man sich ein bisschen daran gewöhnen, also auswählen mit der Tab-Taste, Und nur, wenn Sie wirklich eine neue Zeile haben wollen, dann auch mit Return. Sie sehen auch hier die Schlüsselwörter: Dim, As Integer sind so ein bisschen bläulich gefärbt. Und haben vielleicht auch bemerkt, dass ich das alles klein geschrieben habe, außer meiner eigenen Variablen, und die Schlüsselwörter entsprechend in Großschreibung verändert wurden, so wie sie definiert sind. Jetzt kann ich dieser Variablen einen Wert geben. Und auch da fange ich nur an zu schreiben und drücke jetzt Strg + Leertaste, Dann guckt der Editor, ob es entweder eine Liste von ähnlichen Wörtern gibt, die er dann anzeigt, oder ob er es direkt ergänzt und sagt: "Das kann nur dieses sein, und ich schreibe das". Ich mache das mal ein bisschen unschärfer, so zu sagen. In ist zu wenig, wenn jetzt Strg + Leertaste drücke, dann gibt es noch einen Vorschlag, was es sein könnte. Und je mehr ich tippe, desto dichter komme ich daran, und auch dann mit Tab-Taste auswählen. Das funktioniert bei allen Prozedurnamen, Variablennamen, was Sie so haben. Und ich will ja einen neuen Wert zuweisen. Also, ist gleich 123. Auch da verlasse ich die Zeile mit dem Cursor-Tasten allerdings, mit demit dem Pfeiltasten. Und damit ist das Programm, die Prozedur komplett. Sie würden allerdings nichts davon sehen. Deswegen will ich jetzt hier noch ein Befehl dahinter schreiben, der in der Lage ist in das Direktfenster zu schreiben. Das habe ich ganz am Anfang weggemacht, muss es also jetzt wieder mit Ansicht Direktfenster anzeigen, oder das mache ich häufiger mit Strg + G, Da kommt es egal, wo Sie gerade den Cursor haben. Direkt da unten, der Direktbereich, der im Menü Direktfenster heißt. Und in Wirklichkeit ein Debug Window ist, ein Entwanzenfenster, wenn man das genau übersetzten würde. Debuggen ist die Tätigkeit Fehler zu finden. Und dieses Schlüsselwort wird hier benutzt, weil es unter anderem auch dabei hilft. Es ist nicht zwingend, eine Fehlersuche. Aber damit kann man Fehler finden. Und Sie sehen hier schon die erste Bequemlichkeit. Wenn Sie nach dem Befehl Debug einen Punkt machen, sagt er die beiden Aktionen, die er kennt. Eine davon ist Print, Debug Punkt Print, und das P reicht, mit Tab-Taste auswählen. Und was er printen, nämlich drucken soll da unten im Fenster, ist der Inhalt von Test, Strg + Leertaste. Dann liest sich das hier: "Drucke im Direktfenster den Inhalt von Test". Sinnvollerweise speichert man vorher, bevor man testet. Und wenn Sie den Cursor jetzt innerhalb der Prozedur stehen haben, dann können Sie das mit F5 oder hier dem kleinen grünen Dreieck starten. Dann wird das durchlaufen, die Variable wird deklariert, kriegt hier einen Wert, und der Wert wird da unten gedrückt. Soweit, so banal. Diese Variable ist innerhalb einer Prozedur deklariert. Das heißt, sie ist lokal. Und das bedeutet, wenn ich jetzt eine zweite Prozedur Sub Test02 erfinde, mit Return fertig schreiben und mit Tab einrücken. Und dort der Variablen intTest eine andere Zahl zuweise, und das wieder ausdrucken lasse. Das können Sie auch bequem kopieren. Hier, der Klick, um die ganze Zeile zu markieren. Mit gedruckten Strg-Taste nach unten, und zwar in den Anfang, ziehen. Erst die Maus loslassen, dann die Strg-Taste. Dann können Sie jetzt die zweite Prozedur starten und nachdem speichern sicherheitshalber. Einmal ausführen. Und die wird dort entsprechend Ihren Wert zeigen. Aber, was passiert, wenn ich diese Zeile entferne, oder alternativ mit einem Hochkomma, das ist neben dem Ä auf der Tastatur, mit einem Hochkomma kommentiere? Ich schreibe das nochmal dahinter. Das ist nämlich das Gleiche, ob Sie es löschen. das ist kommentiert, und wird damit ignoriert. Dieses ist der übliche Kommentar hinter einer Zeile und damit können Sie die Zeile selber lahmlegen. Ich mache mal hier ein Beispiel. Kommentar: das wird ausgedruckt. Dann sehen Sie wie das normal ist. Was passiert jetzt eigentlich, wenn ich... Ich lösche das hier mal alles. Nur die Test02 laufen lasse? Da wird überraschend gar nichts erscheinen. Genau genommen, ist da was erschienen, ein Leerstring, eine leere Zeichenkette, aber es ist keineswegs dieses intTest und dieses intTest identisch. Dieses deklarierte intTest ist eins, was innerhalb der Prozedur Test01 gilt. Und selbst wenn ich es unten nicht deklariere, das ist im Grunde Schlampigkeit. Ich kopiere das mal runter. Wenn ich es hier deklariere, wird das noch deutlicher. Dieses ist ein eigenes intTest, Genau genommen, müsste ich sagen, das ist intTest von Test02. Und das ist intTest von Test01. Und das ist gut so, denn lokale Variablen, das haben wir hier gerade, gelten innerhalb der Prozedur. Am Anfang der Prozedur werden sie deklariert, dimensioniert. Und am Ende der Prozedur sind sie weggelöscht und nicht erreichbar. Und jede andere Prozedur hat, auch wenn sie gleichnamig sind, eigene Variablen. Das schützt sie vor versehentlichen Zugriffen, aber hat natürlich am Anfang so ein klein bisschen den Eindruck, als wäre das lästig. Nein, es ist nicht lästig, es ist gut. Aber es lässt sich natürlich auch ändern mit öffentlicher Variable. Dieses sind ausdrücklich lokale Variablen innerhalb einer Prozedur.

Excel 2013 VBA Grundkurs

Holen Sie aus Excel 2013 mit der integrierten Programmiersprache VBA auch das letzte Quäntchen an Funktion heraus und lassen Sie sich dazu zeigen, was alles möglich ist.

6 Std. 18 min (63 Videos)
Derzeit sind keine Feedbacks vorhanden...

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!