Jak tworzyć proste pętle (For Next) w VBA do powtarzalnych zadań?
Pętle For...Next są fundamentem automatyzacji w VBA (Visual Basic for Applications). Pozwalają one na wielokrotne wykonanie bloku kodu określoną liczbę razy. Jest to idealne rozwiązanie do formatowania zakresów, czyszczenia danych, czy iterowania przez wiersze lub kolumny.
1. Podstawowa składnia pętli For...Next
Pętla For...Next wymaga zdefiniowania licznika (zmiennej) oraz wartości początkowej i końcowej.
For Licznik = WartośćPoczątkowa To WartośćKońcowa
' Blok kodu do wykonania
' np. formatowanie, obliczenia
Next Licznik
2. Przykład 1: Proste formatowanie wierszy
Załóżmy, że chcesz zastosować kolor tła co drugiemu wierszowi w zakresie od wiersza 2 do 11, aby poprawić czytelność (paski zebry).
- Otwórz Edytor VBA (Alt + F11).
- Wstaw nowy moduł (Wstaw -> Moduł).
- Wklej poniższy kod:
Sub PaskiZebry()
' Zmienna 'i' będzie naszym licznikiem wierszy
Dim i As Integer
' Pętla od wiersza 2 do 11
For i = 2 To 11
' Sprawdzamy, czy numer wiersza (i) jest parzysty (MOD 2 = 0)
If i Mod 2 = 0 Then
' Jeśli parzysty, kolorujemy cały wiersz
Rows(i).Interior.Color = RGB(220, 220, 220) ' Jasnoszary kolor
End If
Next i
MsgBox "Formatowanie zakończone!"
End Sub
3. Przykład 2: Pętla z krokiem (Step)
Opcjonalny argument Step pozwala kontrolować, o ile zwiększa się licznik w każdej iteracji. Domyślnie Step wynosi 1.
Jeśli chcemy sformatować tylko co trzeci wiersz (np. 3, 6, 9), możemy użyć Step 3:
Sub FormatujCoTrzeciWiersz()
Dim Licznik As Integer
' Pętla startuje w wierszu 3, idzie do 18, co 3 wiersze
For Licznik = 3 To 18 Step 3
' Kolorujemy tło
Rows(Licznik).Interior.Color = RGB(255, 255, 0) ' Żółty
Next Licznik
End Sub
Step -1) do iterowania wstecz. Jest to przydatne, gdy musisz usuwać wiersze, ponieważ usuwanie wierszy w kolejności rosnącej zmienia numery wierszy i może spowodować pominięcie danych.
4. Przykład 3: Łączenie pętli z komórkami (Cells)
Aby odwołać się do komórek w pętli, najlepiej jest użyć obiektu Cells, ponieważ pozwala on na użycie zmiennej (licznika) jako numeru wiersza lub kolumny. Składnia: Cells(numer_wiersza, numer_kolumny).
Chcemy wpisać "OK" do komórki w kolumnie D (kolumna 4) dla wierszy od 5 do 15:
Sub DodajStatus()
Dim i As Integer
For i = 5 To 15
' Odwołanie do komórki w i-tym wierszu, kolumna 4 (D)
Cells(i, 4).Value = "OK - Przetworzono"
' Pogrubienie komórki w kolumnie C
Cells(i, 3).Font.Bold = True
Next i
End Sub
Pętla For i = 1 To 10: ... Next i wykona kod 10 razy, a wartość zmiennej i będzie dynamicznie zmieniać się z 1 na 10, umożliwiając Ci odwołanie się do kolejnych elementów w arkuszu za pomocą Cells(i, ...).
Komentarze
Prześlij komentarz