Pętle powtarzają instrukcje kilka razy i mogą zaoszczędzić dużo czasu.
W Excel VBA istnieją następujące typy pętli:
Poniższy kod wstawia sekwencję liczb do każdej komórki kolumny A (od 1 do 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
Ten kod jest bardzo powtarzalny...
Wyobraź sobie, że musielibyśmy wstawiać kolejne liczby do setek komórek zamiast tylko 12... Teraz rozumiesz, dlaczego pętle są bardzo przydatne.
Podajmy przykład pustego cyklu While:
Sub while_loop()
    While [stan : schorzenie]
        'Instrukcje
    Wend
End Sub
Dopóki warunek jest spełniony, instrukcje w pętli będą nadal wykonywane (należy jednak uważać, aby nie utworzyć nieskończonej pętli).
Poniżej znajduje się omówione wcześniej makro zapętlające, zamienione w pętlę While:
Sub while_loop()
    Dim num As Integer
    num = 1 'Numer początkowy (w tym przypadku jest to numer linii i ustawiana wartość)
    While num <= 12 'Dopóki zmienna num jest mniejsza lub równa 12, instrukcje zostaną wykonane
       Cells(num, 1) = num 'Numeracja
       num = num + 1 'Po każdym przejściu pętli liczba jest zwiększana o 1
    Wend
       
End Sub
Używając tej pętli w makrze, gdybyśmy potrzebowali 400 taśm zamiast 12, jedyne co musielibyśmy zrobić, to zastąpić 12 400.
Istnieje inny sposób napisania pętli, która działa tak samo jak While Wend (działa tak długo, jak spełniony jest określony warunek zawarty w poleceniu While):
Sub do_while_loop()
    Do While [stan : schorzenie]
        'Instrukcje
    Loop
End Sub
W poniższej wersji widać, że warunek można zapisać na końcu pętli Do Loop, co oznacza, że instrukcje zostaną wykonane dokładnie co najmniej raz:
Sub do_while_loop()
    Do
        'Instrukcje
    Loop While [stan : schorzenie]
End Sub
Zamiast wykonywać pętlę, gdy warunek jest spełniony, możemy również wyjść z pętli na podstawie warunku, jeśli zastąpimy While przez Until:
Sub do_while_loop()
    Do Until [stan : schorzenie]
        'Instrukcje
    Loop
End Sub
Sub for_loop()
    For i = 1 To 5
        'Instrukcje
    Next
End Sub
Pętla For powtórzy się tutaj 5 razy.
Za każdym razem, gdy ten cykl się powtarza, zmienna i jest automatycznie zwiększana o 1:
Sub for_loop()
    For i = 1 To 5
        MsgBox i
    Next
End Sub
Możliwe jest wcześniejsze wyjście z pętli For, korzystając z poniższej instrukcji:
Exit For 'Wyjdź z pętli For
Rozważmy przykład, który wyraźnie to pokaże:
Sub for_loop()
    Dim max_loops As Integer
    max_loops = Range("A1") 'W komórce A1 określiliśmy limit liczby powtórzeń
    For i = 1 To 7 'Oczekiwana liczba cykli: 7
       If i > max_loops Then 'Jeśli komórka A1 jest pusta lub zawiera liczbę mniejszą niż 7, to zmniejsz liczbę powtórzeń
           Exit For 'Jeżeli poprzedni warunek to TRUE to wyjście z pętli For...loop
       End If
   
       MsgBox i
    Next
End Sub
Inni operatorzy Exit:
Exit Do 'Wyjście z pętli Do Loop
Exit Sub 'Wyjdź z procedury
Exit Function 'Funkcja wyjścia