Schleifen wiederholen Anweisungen mehrmals und können viel Zeit sparen.
Die folgenden Arten von Schleifen existieren in Excel VBA:
Der folgende Code fügt eine Zahlenfolge in jede Zelle der Spalte A ein (von 1 bis 12):
Sub while_loop() Cells(1, 1) = 1 Cells(2, 1) = 2 Cells(3, 1) = 3 Cells(4, 1) = 4 Cells(5, 1) = 5 Cells(6, 1) = 6 Cells(7, 1) = 7 Cells(8, 1) = 8 Cells(9, 1) = 9 Cells(10, 1) = 10 Cells(11, 1) = 11 Cells(12, 1) = 12 End Sub
Dieser Code ist sehr repetitiv ...
Stellen Sie sich vor, wir müssten statt nur 12 aufeinanderfolgende Zahlen in Hunderte von Zellen einfügen ... Jetzt verstehen Sie, warum Schleifen sehr nützlich sind.
Geben wir ein Beispiel für einen leeren Zyklus While:
Sub while_loop() While [Zustand] 'Anweisungen Wend End Sub
Solange die Bedingung erfüllt ist, werden die Anweisungen in der Schleife weiterhin ausgeführt (achten Sie jedoch darauf, dass keine Endlosschleife entsteht).
Unten sehen Sie das zuvor besprochene Schleifenmakro, das in eine While-Schleife umgewandelt wurde:
Sub while_loop() Dim num As Integer num = 1 'Die Startnummer (in diesem Fall ist es die Zeilennummer und der Wert, auf den gesetzt wird) While num <= 12 'Solange die Num-Variable kleiner oder gleich 12 ist, werden die Anweisungen ausgeführt Cells(num, 1) = num 'Nummerierung num = num + 1 'Die Zahl wird bei jedem Schleifendurchlauf um 1 erhöht Wend End Sub
Mit dieser Schleife in einem Makro müssten wir, wenn wir 400 statt 12 Bänder benötigen, lediglich 12 durch 400 ersetzen.
Es gibt eine andere Möglichkeit, eine Schleife zu schreiben, die genauso funktioniert wie While Wend (sie wird ausgeführt, solange eine bestimmte im Befehl While enthaltene Bedingung wahr ist):
Sub do_while_loop() Do While [Zustand] 'Anweisungen Loop End Sub
Die folgende Version zeigt, dass die Bedingung am Ende der Do Loop-Schleife geschrieben werden kann, was bedeutet, dass die Anweisungen genau mindestens einmal ausgeführt werden:
Sub do_while_loop() Do 'Anweisungen Loop While [Zustand] End Sub
Anstatt eine Schleife zu durchlaufen, während die Bedingung erfüllt ist, können wir die Schleife auch durch eine Bedingung verlassen, indem wir While durch Until ersetzen:
Sub do_while_loop() Do Until [Zustand] 'Anweisungen Loop End Sub
Sub for_loop() For i = 1 To 5 'Anweisungen Next End Sub
Die For-Schleife wird hier fünfmal wiederholt.
Bei jeder Wiederholung dieses Zyklus wird die Variable i automatisch um 1 erhöht:
Sub for_loop() For i = 1 To 5 MsgBox i Next End Sub
Mit der folgenden Anweisung ist es möglich, die For-Schleife vorzeitig zu verlassen:
Exit For 'Verlassen Sie die For-Schleife
Betrachten wir ein Beispiel, das dies deutlich zeigt:
Sub for_loop() Dim max_loops As Integer max_loops = Range("A1") 'In Zelle A1 haben wir das Limit für die Anzahl der Wiederholungen angegeben For i = 1 To 7 'Erwartete Anzahl an Zyklen: 7 If i > max_loops Then 'Wenn Zelle A1 leer ist oder eine Zahl kleiner als 7 enthält, reduzieren Sie die Anzahl der Wiederholungen Exit For 'Wenn die vorherige Bedingung TRUE ist, dann ist der Ausgang aus der Schleife For...loop End If MsgBox i Next End Sub
Andere Exit-Operatoren:
Exit Do 'Schleifenausgang Do Loop
Exit Sub 'Verlassen Sie den Vorgang
Exit Function 'Exit-Funktion