Pętla Do…While/Until

Czasami chcemy wykonywać dany fragment do czasu aż dany warunek jest prawdziwy/fałszywy. Sprawdzanie warunku może się odbyć na początku pętli (wtedy istnieje możliwość, że ciało pętli nie zostanie wykonane ani razu) lub na końcu pętli (wtedy ciało pętli wykona się przynajmniej jeden raz).

Konstrukcje typu Do…While są przydatne gdy nie możemy oszacować jak w przypadku pętli For ile razy dokładnie będziemy wykonywać dany kod. Przykładem jest np. odczytywanie danych po jednej linijce z pliku – nie możemy użyć pętli for bo raczej nie wiemy ile dokładnie linijek ma dany plik.

Oto wszystkie możliwe 4 warianty pętli Do…While/Until, wszystkie przykłady wykonują to samo tj. wyświetlają liczby od 1 do 10

Sub DoWhileUntilLoop()
Dim a As Long

'Wykonuj pętlę dopóki warunek a<=10 jest prawdziwy
a = 1
Do While a <= 10
    Debug.Print a
    a = a + 1
Loop

'To samo, ale warunek sprawdzamy po wykonaniu ciała pętli
a = 1 'Zmień na a=100
Do
    Debug.Print a
    a = a + 1
Loop While a <= 10


'Wykonuj pętlę do cały czas aż warunek nie będzie fałszywy
a = 1
Do Until a > 10
    Debug.Print a
    a = a + 1
Loop

'To samo, ale warunek sprawdzamy po wykonaniu ciała pętli
a = 1 'Zmień na a=100
Do
    Debug.Print a
    a = a + 1
Loop Until a > 10

End Sub

W powyższych przykładach zamiast wyświetlać kolejne liczby za pomocą okienka MsgBox użyłem konstrukcji Debug.Print dzięki czemu wartości zmiennej a zostały wyświetlone w okienku Immediate

Wróć do spisu treści