Excel 2016 VBA Grundkurs

For/Next-Schleife

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die For/Next-Schleife zählt eine Variable von einem Anfangs- bis zu einem Endwert und kann in ihrem Verlauf entsprechend viele Aktionen durchführen. Sie ist sozusagen die Standard-Schleifenkonstruktion.

Transkript

Wenn Sie eine Aktion wiederholen wollen, oder alternativ mehrere Objekte einfach nur gleich behandeln wollen, dann brauchen Sie eine Schleife. Und zwar grundsätzlich erstmal eine For/Next-Schleife, wenn Sie wissen, wie viele Objekte oder wie viele Wiederholungen Sie haben. Deswegen fange ich hier schon mal mit einem ersten Beispiel an. Ich würde einfach zehn Zeilen unten im Fenster anzeigen, und entsprechend nenne ich auch meine Prozedur. Und eine For/Next-Schleife braucht immer einen Zähler, eine Variable dafür. Also Dim intZaehler As Integer. Integer ist natürlich völlig überdimensioniert für zehn Zeilen, da würde auch Byte ausreichen. Aber ganz ehrlich, wir verschenken hier nicht besonders viel Speicher von Byte auf Integer. Das lohnt sich kaum. Und es ist einfach eine Gewohnheit - Integer reicht praktisch immer. Erst wenn Sie mit wirklich großen Datenmengen zu tun haben, müssen Sie mal genauer über den Speicherverbrauch von Variablen nachdenken. Aber da geht es dann mehr um Erase oder Ähnliches. Hier haben wir eine einfache Zählervariable, und die spart nicht wirklich. Deswegen kann ich jetzt auch mit einer Integer-Variablen arbeiten. For intZaehler - kann ich ja mit Steuerung+Leertaste anzeigen - gleich Anfangswert to Endewert. Und damit ich es nicht vergesse, das Next. Während bei Sub hier ein End Sub steht, und auch bei If ein End If, ist das Gegenstück zum For nicht etwa ein End For, sondern ein Next. Deswegen wird diese Schleife auch For/Next-Schleife genannt. Und innerhalb der Schleife, alles, was da steht - ich habe da jetzt nur eine Zeile gleich, aber das können auch mehrere sein - das wird so oft wiederholt, wie der Schleifenzähler vorgibt. Hier kommt jetzt ein banales Debug.Print, und ich möchte einfach nur schreiben: Zeile verkettet mit der Nummer. Das braucht unten also zehn Zeilen Platz, da müssen wir ein bisschen Platz schaffen. Und wenn ich das jetzt mit F5 starte, dann sehen Sie Zeile 1 bis 10. Das ist natürlich nur ein Beispiel. Im wirklichen Leben werden Sie es so nicht brauchen. Aber das ist sozusagen die minimale Syntax für eine Schleife. Das will ich jetzt ein bisschen konkreter machen, so wie man es im normalen Leben eher braucht. Also ich will die Tabellennamen auflisten. Sie sehen hier übrigens auch schon, dass da nicht besonders viele Namen drinstehen. Deswegen mit Alt+F11 erstmal in die Tabellen selber; und hier werde ich mir mit dem Pluszeichen erstmal ein paar hinzufügen. Damit die nicht so langweilig heißen, werde ich die völlig beliebig umbenennen. Sonst würde es so wirken, als seien die einfach nur durchnummeriert. Das will ich vermeiden. Und sagen wir hier nochmal "Demo". Die dürfen natürlich auch richtige Namen haben, aber hier ist es nur, damit es überhaupt funktioniert. Und nach dem Alt+F11 sehen Sie jetzt hier die entsprechende Liste. Hier kann ich mal ein bisschen nach unten schieben... Und die will ich jetzt im Debug-Bereich auflisten. Also mit Sub AlleTabellen nenne ich das mal einfach brauche ich wieder eine Schleifenzählervariable. Die heißt wieder genauso lieblos intZaehler As Integer. Und dann geht es wieder los: For intZaehler gleich Anfangswert. Da müssen wir als Erstes darüber nachdenken: Welche Nummer hat denn die erste Tabelle? Lassen Sie sich nicht irritieren, nur weil hier eine 1 steht, oder da. Die hat nicht deswegen zwingend die Nummer 1. Die meisten, um nicht zu sagen normalerweise fast alle Auflistungsobjekte - und die Tabellen sind so ein Auflistungsobjekt - beginnen den VBA mit 0. Außer bei Excel - da sind erstaunlich viele Auflistungen mit 1 beginnend. Das müssen Sie schlicht nachgucken oder ausprobieren. In diesem Fall weiß ich es, die Tabellenauflistung ist mit 1 beginnend. Also der Startwert ist 1. Und jetzt kommt der Endewert. Jetzt sollten Sie auf keinen Fall hingehen und sagen: Ich sehe hier ja 7 Tabellen, dann schreibe ich jetzt eine 7 hin. Denn dann würde Ihr Code scheitern, sobald die Anzahl der Tabellen sich ändert. Sie wollen stattdessen lieber formulieren: Von der ersten bis zur letzten, nämlich bis zur Anzahl der Tabellen. Und da sie es nicht selber wissen dürfen, fragen Sie jemanden! Wir fragen am besten den Besitzer der Tabellen. Das ist die Datei, diese Arbeitsmappe, oder in VBA Active Workbook. Das ist die Arbeitsmappe, die gerade geöffnet ist. Die hat - und das ist jetzt die Auflistung, das Auflistungsobjekt - die hat eine Liste von Worksheets, Plural. Und diese Auflistung hat eine Count-Eigenschaft. Da drin steht die Zahl 7, wenn das 7 Tabellen sind. Und das Next nicht vergessen. Also im Gegensatz zu hier oben, wo ich die Zahl schon schreiben kann, kann ich hier nur schreiben, wen ich frage. Aber auch da steht immer eine Zahl drin. Jetzt kommt entsprechend wieder ein Debug.Print. Und dann schreibe ich so etwas wie: Tabelle Nr. verkettet mit intZaehler wiederum verkettet mit Doppelpunkt Leerzeichen und verkettet mit dem Namen. Das greift jetzt schon ein bisschen vor auf den Umgang mit Aufzählungsobjekten. Auch hier würde ich jetzt ActiveWorkbook.Worksheets schreiben und in den Klammern die Nummer - das wievielte Worksheet-Objekt für die Tabelle will ich haben. Und das hat dann eine Nebeneigenschaft. Das gucken wir uns gelegentlich noch genauer an. Aber bis dahin kann ich schon mal versprechen und hoffen, dass es funktioniert. Mit Debuggen Kompilieren erstmal syntaktisch testen. Und dann einfach reinklicken und F5. Sie sehen jetzt hier diese Auflistung, die hier sehr einfach zu überprüfen ist. Da steht nämlich mehr oder weniger das Gleiche. Es ist also bei For/Next-Schleifen wichtig, dass Sie wissen, wie viele Objekte Sie besitzen. Entweder in dem Sie es vorgeben, oder indem Sie die Auflistung - den Besitzer dieser Objekte sozusagen - fragen. Solche Auflistungen haben für diesen Fall eine Count-Eigenschaft. Was Sie dann machen, ob Sie langweilig mit Debug.Print irgendwelche Werte herausschreiben oder mit den Objekten umgehen, ist erstmal egal. Die For/Next-Schleife arbeitet das in - Step 1 steht hier in Gedanken - in Einserschritten ab.

Excel 2016 VBA Grundkurs

Lassen Sie sich systematisch in die Excel-Programmierung mit Visual Basic for Applications (VBA) einführen.

7 Std. 25 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:30.08.2016

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!