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.

Najkrócej:

Do przejścia po wszystkich arkuszach najczytelniejsza jest pętla For Each po kolekcji ThisWorkbook.Worksheets.

Gotowy kod

Skopiuj makro

VBA
Sub PetlaPoArkuszach()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        ws.Range("A1").Value = "Raport"
        Debug.Print ws.Name
    Next ws
End Sub
Dostosowanie

Co zmienić w kodzie?

01

Zastąp wpisywanie "Raport" własną operacją.

02

ThisWorkbook oznacza skoroszyt, w którym znajduje się kod VBA.

03

Jeżeli chcesz pominąć jeden arkusz, dodaj wewnątrz pętli warunek If ws.Name <> "..." Then.

Wyjaśnienie

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.

Uważaj na

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ść.