VBA — pętla po wierszach w Excelu

Praktyczna pętla For w VBA przechodząca po wszystkich rekordach od drugiego do ostatniego wiersza. Gotowy przykład.

Najkrócej:

Najczęściej najpierw wyznaczasz ostatni wiersz, a następnie przechodzisz przez rekordy pętlą For.

Gotowy kod

Skopiuj makro

VBA
Sub PetlaPoWierszach()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long

    Set ws = ThisWorkbook.Worksheets("Dane")
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    For i = 2 To lastRow
        If ws.Cells(i, "C").Value = "" Then
            ws.Cells(i, "C").Value = "BRAK"
        End If
    Next i
End Sub
Dostosowanie

Co zmienić w kodzie?

01

Pętla zaczyna się od 2, ponieważ zakładamy nagłówki w pierwszym wierszu.

02

Kolumna A służy do ustalenia końca danych, a kolumna C jest modyfikowana.

03

Warunek wewnątrz If możesz zastąpić własną logiką.

Wyjaśnienie

Jak działa ten kod?

For i = 2 To lastRow wykonuje kod po kolei dla każdego numeru wiersza.

Cells(i, "C") oznacza komórkę w aktualnym wierszu i kolumnie C.

Next i przechodzi do następnego rekordu aż do ostatniego wiersza.

Uważaj na

Najczęstsze błędy

Pętle po komórkach są proste, ale przy setkach tysięcy wierszy mogą być wolniejsze niż praca na tablicach.

Nie używaj całej kolumny jako zakresu pętli, jeśli wystarczy zakres faktycznie zajęty przez dane.

Przy zmianie wartości w arkuszu rozważ wyłączenie ScreenUpdating i zdarzeń dla większych operacji.