VBA — pętla po wszystkich arkuszach
Jak wykonać ten sam kod dla każdego arkusza skoroszytu. Gotowa pętla For Each po Worksheets i przykłady zastosowania.
Do przejścia po wszystkich arkuszach najczytelniejsza jest pętla For Each po kolekcji ThisWorkbook.Worksheets.
Skopiuj makro
Sub PetlaPoArkuszach()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Range("A1").Value = "Raport"
Debug.Print ws.Name
Next ws
End SubCo zmienić w kodzie?
Zastąp wpisywanie "Raport" własną operacją.
ThisWorkbook oznacza skoroszyt, w którym znajduje się kod VBA.
Jeżeli chcesz pominąć jeden arkusz, dodaj wewnątrz pętli warunek If ws.Name <> "..." Then.
Jak działa ten kod?
For Each pobiera po kolei każdy obiekt Worksheet z kolekcji Worksheets.
Zmienna ws zawsze odnosi się do aktualnego arkusza pętli.
Debug.Print ws.Name wypisuje nazwę arkusza w oknie Immediate i pomaga podczas testów.
Najczęstsze błędy
Nie używaj ActiveSheet wewnątrz takiej pętli, jeśli nie aktywujesz każdego arkusza celowo.
Kolekcja Worksheets nie obejmuje arkuszy wykresów; do wszystkich typów arkuszy służy Sheets.
Uważaj na arkusze chronione, jeśli kod ma zmieniać ich zawartość.