Pętla For Each Next w VBA Excel

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
Kurs Excel VBA - Pętla For Each Next VBA
Kurs Excel VBA – Pętla For Each Next VBA

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
Kurs Excel VBA - Pętla VBA For Each Next
Kurs Excel VBA – Pętla VBA For Each Next

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:

Artykuł jest częścią kursu vba Excel. Całość kursu znajdziesz pod tym linkiem: Kurs VBA. Poniżej zamieszczam plik z kodem programu:

Kurs_excel_vba_for_each_next.xlsm

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *