1. Czym jest pętla For Each Next w VBA?
W tym artykule dowiesz się czym jest pętla For Each Next i jak z niej korzystać w Excel VBA. Pętla For Each Next jest rozszerzeniem pętli VBA For. Różnica pomiędzy tymi dwoma rodzajami pętel jest taka, że For Each możemy stosować do pewniej grupy elementów np do:
- wszystkich komórek w zakresie
- wszystkich arkuszy
- wszystkich tabel przestawnych itp
Składania pętli VBA For Each Next jest następująca:
'tomaszkenig.pl For Each element [ As datatype ] In group [ statements ] Next [ element ]
element – element do którego odnosimy się w grupie np każde komórka, każdy arkusz itp.
group – grupa elementów np wszytkie arkusze, komórki w zakresie, tabele przestawne itp.
statements – polecenia, którymi zostaną objęte wszystkie elementy w grupie. Np wszystkie komórki kolorujemy na żółto, wszystkie arkusze ukrywamy itp.
Pętla VBA For Each Next działa na elementach. Najczęściej używane elementy w pętli to:
- Worksheet w grupie Worksheets – arkusz
- Pivottable w grupie Pivottables – tabele przestawne
- element w grupie Range(„X:X”) – komórki w grupie zakres
2. Przykłady VBA For Each Next
Przykład 1: Poniżej najprostszy przykład pętli Each. Przykład polega na wprowadzeniu w każdym arkuszu do komórki A1 dowolnego tekstu.
'tomaszkenig.pl Sub PetlaForEach1() Dim arkusz As Worksheet For Each arkusz In ActiveWorkbook.Worksheets arkusz.Range("A1") = "Dowolny tekst" Next arkusz End Sub

Opis Przykładu: Jak widzisz, elementem w pętli jest arkusz zdefiniowany na początku kodu jako Worksheet. Pętla przechodzi po każdym arkuszu po kolei i wstawia w nich tekst w komórce A1. Grupą obiektów w pętli są arkusze w aktywnym skoroszycie oznaczone jako ActiveWorkbook.Worksheets.
Przykład 2: Stwórzmy pętlę For Each Next, która w zakresie komórek B1:c10 wyszukuje komórki puste. Następnie wnętrza komórek pustych zaznacza kolorem żółtym.
'tomaszkenig.pl Sub PetlaForEach2() For Each element In Range("B1:C10") If IsEmpty(element.Value) = True Then element.Interior.ColorIndex = 6 End If Next End Sub

Opis przykładu: Jak widzisz komórka oznaczona jako element w zakresie jest sprawdzana pod kątem występowania w niej pustej wartości. Jeśli pętla For Each Next napotka na pustą wartość, koloruje komórkę na żółto. Na temat formatowania komórek w VBA możesz poczytać więcej w tej części kursu: VBA Formatowanie komórek i czcionek.
Kilka innych przykładów pętli VBA For Each Next:
- Wyświetlanie informacji o tabelach przestawnych
- Odkrywanie wszystkich ukrytych arkuszy w VBA
- Odświeżanie wszystkich tabel przestawnych VBA
Artykuł jest częścią kursu vba Excel. Całość kursu znajdziesz pod tym linkiem: Kurs VBA. Poniżej zamieszczam plik z kodem programu: