Wenn Sie in VBA einen Vorgang mehr als einmal durchführen möchten, verwenden Sie dazu eine sogenannte Schleife. Davon gibt es verschiedene Arten: Eine wird entsprechend einer vorgegebenen Anzahl durchlaufen, andere bis zum Eintreten einer bestimmten Bedingung. Dieser Artikel stellt die verschiedenen Schleifenarten vor.
Schleifen
Grundsätzlich sind Schleifen Code-Konstrukte und ähneln vom Aufbau her den VBA-Routinen. Sie besitzen einen Schleifenkopf und eine abschließende Anweisung, die allerdings in diesem Fall nur das Ende eines Durchlaufs der Anweisungen innerhalb der Schleife bedeutet.
Beispiele
Die Beispiele dieses Artikels finden Sie im Modul mdlSchleifen der Beispieldatenbank Access_Basics_2011_04.mdb.
For…Next-Schleife
Die For…Next-Schleife zeichnet sich dadurch aus, dass zu Beginn festgelegt wird, wie oft die enthaltenen Anweisungen durchlaufen werden.
Um nachzuhalten, wie oft die Anweisungen innerhalb der Schleife bereits durchlaufen wurden, wird eine sogenannte Laufvariable verwendet, die meistens i genannt wird.
Die erste Zeile der For…Next-Schleife enthält außerdem noch den ersten und den letzten Wert sowie gegebenfalls eine Schrittweite. Die Standardschrittweite lautet 1. Man gibt nur in Ausnahmefällen eine alternative Schrittweite an – dazu später mehr.
Die letzte Zeile einer For…Next-Schleife enthält lediglich das Next-Schlüsselwort und optional den Namen der Laufvariable (dies dient ausschließlich der übersicht). Insgesamt sieht eine For…Next-Schleife, die beispielsweise mit den Werten von 1 bis 10 für die Variable i durchlaufen werden soll, wie folgt aus:
Dim i As Integer For i = 1 To 10 Debug.Print i Next i
Innerhalb der For…Next-Schleife wird der Wert von i im Direktfenster ausgeben. Dort erscheinen beim Aufrufen der Prozedur ForNext_I des Moduls mdlSchleifen der Beispieldatenbank also die Zahlen von 1 bis 10. Der Ablauf der For…Next-Schleife wird auch vom Flussdiagramm in Bild 1 skizziert. Die Schleife startet mit dem Wert 1 für die Variable i.
Bild 1: Flussdiagramm für eine For…Next-Schleife
Enthält i einen Wert kleiner oder gleich dem Endwert der Schleife, werden die Anweisungen des Schleifenkörpers ausgeführt und i um eins erhöht.
Monate ausgeben
Die Laufvariable können Sie gleich sinnvoll nutzen. Das folgende Beispiel durchläuft etwa die Zahlen von 1 bis 12 und gibt die entsprechenden Monatsnamen aus:
For i = 1 To 12 Debug.Print Format("1." & i & "." & Year(Date), ? "mmmm") Next i
Schrittweite mit Step einstellen
Der For…-Zeile können Sie noch das Schlüsselwort Step mit der gewünschten Schrittweiter hinzufügen. Wenn Sie die Zahlen von 10 bis 1 rückwärts durchlaufen möchten, geben Sie als Startwert 10, als Endwert 1 und für Step den Wert -1 an:
For i = 10 To 1 Step -1 Debug.Print i Next i
Exit For
Gelegentlich werden Sie eine For…Next-Schleife vorzeitig verlassen wollen. In diesem Fall können Sie die Exit For-Anweisung verwenden:
For i = 1 To 10 Debug.Print i If i = 5 Then Exit For End If Next i
Verschachtelte Schleifen
Möglicherweise möchten Sie einmal zwei oder mehr verschachtelte Schleifen verwenden. Dazu benötigen Sie entsprechend viele Laufvariablen, im folgenden Beispiel i und j:
Dim i As Integer Dim j As Integer For i = 1 To 5 For j = 1 To 5 Debug.Print "(" & j & "," & i & ")", Next j Debug.Print Next i
Die obigen Schleifen geben eine Zahlenmatrix wie in Bild 2 aus. Damit jeweils fünf Einträge nebeneinander ausgegeben werden, beenden Sie die Debug.Print-Anweisung der inneren Schleife mit dem Komma-Zeichen.
Bild 2: Ausgabe zweier verschachtelter For…Next-Schleifen
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: