Pętla Do Until
Przykłady opisane w tej lekcji dostępne są w
arkuszu Excela VBA.xlsm, tylko ich
samodzielne przerobienie daje gwarancję zapamiętania tej lekcji.
Przykłady dla wszystkich lekcji szkolenia Excel
2013: ExcelSzkolenie.pl
Cwiczenia Excel 2013.zip
Ta lekcja może być
obejrzana lub przeczytana poniżej.
Film wygląda
najlepiej jeśli będzie odtwarzany w rozdzielczości 720p HD, rozdzielczość można
zmienić dopiero po uruchomieniu filmu klikając na ikonie trybika
która pojawi się w prawym dolnym
rogu poniższego ekranu. Po kilku sekundach od zmiany obraz wyostrzy się.
Pętla Do Until jest bardzo podobna do Do While, różnica polega na tym
że Do Until będzie działać tak długo aż warunek zostanie spełniony = ””, a Do While tak długo jak warunek jest spełniony, w poprzednim
przykładzie tak długo jak zawartość komórki była różna od ‘pustej’ <>””.
Składnia:
Do Until [warunek]
[instrukcje]
Loop
Przykład
1.
(Arkusz: ‘Do Until’,
Moduł: ‘Do_Until’)
Poniżej przedstawiłem kod, który robi dokładnie
to samo co makro opisane w poprzedniej lekcji, ale używa pętli Do Until.
Sub Petla_Do_Until()
Do Until
ActiveCell.Value = "" 'warunek pętli rób tak
długo aż napotkasz pustą komórkę
If Selection.Interior.ColorIndex
= 3 Then 'instrukcja warunkowa If: jeżeli
komórka ma kolor czerwony
ActiveCell.Offset(0, 1).Range("A1").Select 'przejdź o jedną komórkę w prawo
ActiveCell.Value =
"wybrany" 'wpisz
w aktywnej komórce tekst "wybrany"
ActiveCell.Offset(0, -1).Range("A1").Select 'wróć jedną komórkę w lewo
End If 'koniec instrukcji warunkowej If
ActiveCell.Offset(1, 0).Range("A1").Select 'przejdź o jedną komórkę w dół
Loop 'koniec pętli: wróć do linijki z Do Until
End Sub
Przykład
2.
(Arkusz: ‘Do Until’,
Moduł: ‘Do_Until’)
W tym przykładzie chciałbym zaprezentować
instrukcję Exit Do, która pozwala na wyjście z pętli.
W tabeli znajdującej się w kolumnach F i G,
nasz inwestor musiał przerwać uaktualnianie tabeli i wprowadził w komórce tekst
„dalej nie”.
Exit Do jest zazwyczaj
łączone z If, aby wyjście z pętli następowało po
spełnieniu założonego warunku.
Sub Petla_Do_Until_z_instrukcja_Exit_Do()
Do Until
ActiveCell.Value = "" ‘warunek pętli rób tak
długo aż napotkasz pustą komórkę
If Selection.Interior.ColorIndex
= 3 Then 'instrukcja warunkowa If: jeżeli komórka ma kolor czerwony
ActiveCell.Offset(0, 1).Range("A1").Select 'przejdź o jedną komórkę w prawo
ActiveCell.Value =
"wybrany" 'wpisz
w aktywnej komórce tekst "wybrany"
ActiveCell.Offset(0, -1).Range("A1").Select 'wróć jedną komórkę w lewo
End If 'koniec instrukcji warunkowej If
ActiveCell.Offset(1, 0).Range("A1").Select 'przejdź o jedną komórkę w dół
If ActiveCell.Value
= "dalej nie" Then 'Jeżeli w komórce wpisane jest „dalej nie” wtedy
Exit Do ‘zakończ pętle
End If 'koniec warunku If
Loop 'koniec pętli: wróć do linijki z Do Until
End Sub