Pętla
Do While
Przykłady opisane w tej lekcji dostępne są w arkuszu Excela VBA.xls, tylko ich samodzielne przerobienie
daje gwarancję zapamiętania tej lekcji.
Przykłady dla wszystkich lekcji szkolenia Excel 2003: ExcelSzkolenie.pl
Cwiczenia Excel 2003.zip
Często nie wiemy pisząc makro ile razy pewna czynność
powinna być powtórzona, w takich wypadkach bardzo pomocna jest pętla Do While, która
wykonuje zadaną czynność tak długo aż warunek podany po ‘While’ jest spełniony.
Należy przy tym uważać aby nie napisać makra, które samo nigdy nie zakończy
swojego działania.
Składnia:
Do While [warunek]
[instrukcje]
Loop
Słowo Loop jest końcem pętli, po
dojściu do niego następuje przejście do linii zawierającej Do While i ponowne
sprawdzenie, czy warunek jest spełniony jeśli tak instrukcje zostaną wykonane
po raz kolejny, jeśli nie nastąpi przejście do pierwszej linijki kodu makra za
wyrazem ‘Loop’.
Przykład 1.
(Arkusz: ‘Do While’, Moduł:
‘Do_While’)
Pewien inwestor giełdowy ma brzydki
zwyczaj zaznaczania spółek, którymi jest zainteresowany zmieniając kolor tła
komórek na czerwony.
Jego doradca inwestycyjny nie mogąc
użyć filtra, który nie rozpoznaje kolorów, napisał poniższe makro, które dla
komórek z czerwonym tłem wpisuje w kolumnę obok wyraz ‘wybrany’.
Przed uruchomieniem makra należy
ustawić jako aktywną komórkę pierwszą komórkę z kolumny, która ma zostać
sprawdzona.
Sub Petla_Do_While()
Do While ActiveCell.Value <> "" 'warunek pętli rób tak długo aż napotkasz pustą komórkę
If Selection.Interior.ColorIndex = 3 Then 'istrukcja warunkowa If: jeżeli komórka ma kolor czerwony,
wtedy
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ół, niezależnie od koloru więc
po End If
Loop 'koniec
pętli: wróć do linijki z Do While
End Sub
Ponieważ lista może być różnej
długości użyta została pętla Do While, która będzie działać tak długo aż nie
znajdzie pustej komórki, którą oznaczamy jako dwa cudzysłowy ””.
Istrukcja ActiveCell.Offset(x,
y).Range("A1").Select pozwala
makru na przechodzenie pomiędzy komórkami, x to przejście pomiędzy wierszami,
jeśli x jest dodatki w dół, jeśli ujemny w górę, y to przejście pomiędzy
kolumnami, w prawo dla dodatnich wartości y.
Szkolenie Excel 2003 Szkolenie Excel 2007