Start > Kursy on-line > Excel - makra i VBA

Excel - makra i VBA


Pętla For... Next

Załącznik z przykładami dla tego rozdziału znajduje się w tym miejscu.

Poprzednie dwa rozdziały omawiały krótko instrukcje warunkowe, pozwalające na uzależnienie poleceń zawartych w procedurze/funkcji od spełnienia określonych warunków. W tym miejscu omówimy sobie kolejny element: pętlę.
Zaczniemy od pętli, w przypadku której z góry określamy liczbowo ilość powtórzeń. Załóżmy, że chcielibyśmy za pomocą języka VBA napisać procedurę, która wylosuje nam 100 kolejnych liczb z przedziału 0 do 1000 i umieści je w kolumnie, począwszy od aktywnej komórki. W tym celu musielibyśmy użyć sekwencji np. takich poleceń:


Option Explicit

Sub petla_losowa() Dim licznik As Byte For licznik = 1 To 100 ActiveCell = Round(Rnd() * 1000, 0) Cells(ActiveCell.Row + 1, ActiveCell.Column).Select Next licznik End Sub
Spójrzmy teraz na poszczególne wiersze powyższej procedury. Poza definicją jej samej oraz określeniem zmiennej, która będzie wykorzystywana jako licznik powtórzeń pętli mamy samą pętlę: For licznik=1 to 100. W deklaracji tego typu pętli, zawsze musimy wykorzystać zmienną przypisując do niej wartość początkową (u nas jest to "licznik=1"), po czym określamy do jakiego pułapu będzie ta zmienna zwiększana (u nas "To 100"). Można powiedzieć, że polecenie to oznacza: "dla zmiennej o nazwie licznik, od 1 do 100".
Potem umieszczamy sekwencję poleceń, jaka ma być wykonana w każdym powtórzeniu pętli (czyli u nas stukrotnie). My zdefiniowaliśmy, że do aktywnej komórki wpisz wartość, która jest wynikiem zaokrąglenia do zera miejsc po przecinku (funkcja Round) liczby losowej z przedziału 0 i 1 przemnożonej przez 1000 (funkcja Rnd()).
Następnie program przechodzi do komórki w tej samej kolumnie, ale zwiększając nr wiersza o jeden.
Pętla zakończona jest sformułowaniem Next licznik, które zawsze musi być umieszczone po sekwencji poleceń. Mówi ono: "a teraz zwiększ" licznik o zadaną wielkość.

Trzeba wspomnieć na koniec, że argument w pętli "For"Next" nie musi być równy 1. Może to być dowolna wartość całkowita, dodatkowo możemy zdefiniować, iż wartość ta po każdym powtórzeniu może być zwiększana o inną niż jeden wartość, dzięki użyciu opcjonalnego sformułowania Step. Jeśli więc chcielibyśmy zwiększać zmienną licznik o 2 zamiast o 1 (i tym samym spowodować, że liczba powtórzeń odpowiednio zmniejszyłaby się) musielibyśmy napisać:

For licznik = 1 To 100 Step 2

Tak samo możliwe jest użycie tej pętli podczas odliczania w dół wówczas musielibyśmy napisać:

For licznik = 100 To 1 Step -1