Odszukiwanie numeru ostatniego wiersza w tabeli
Często w VBA operując na danych ujętych w tabelach mamy konieczność dodania do tabelki Excela kolejnego wiersza/rekordu z danymi. By zrobić to sprawnie, zwykle jest konieczność znalezienia lokalizacji ostatniego niepustego wiersza. By znaleźć ostatni wypełniony rekord w arkuszu możemy skorzystać z prostego kodu VBA:
Sub LastRow() Dim intLastRow As Integer intLastRow = Range("A1").End(xlDown) + 1 MsgBox intLastRow End Sub
Wyżej zapisany kod umożliwia nam poznanie numeru wiersza w kolumnie A1. Numer wiersza zwracany jest w oknie MsgBox. Sposób jest dobry o ile sprawdzenie następuje na kolumnie, która zawsze jest wypełniona. Dla przykładu jest to np kolumna identyfikujące id rekordu. W momencie, gdy niektóre z komórek wierszy są puste, bądź pomiędzy rekordami są całe puste wiersze możemy skorzystać z makra opartego o przerobione funkcjonalności znajdź w Excel. Kod zamieszczony poniżej działa także w sytuacjach, gdy pomiędzy danymi są całe puste kolumny lub wiersze. Podobnie jak w pierwszym przykładzie, numer wiersza jest zwracany w oknie MsgBox.
Sub FindLastRow() Dim rngCell As Range Set rngCell = Cells.Find(What:="*", After:=Cells(1, 1), LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:= _ False, SearchFormat:=False) '.Activate If Not rngCell Is Nothing Then MsgBox "Ostatni wiersz nr: " & rngCell.Row & " i ostatnia kolumna nr: " & rngCell.Column End Sub
Warto zauważyć, że nasz przykład polega na modyfikacji makra funkcjonalności Znajdź/Zamień w Excel. Główna różnica polega na tym, że wyrażenie, którego szukamy w arkuszu zamieniamy na znak „*” reprezentujący każde możliwe wyrażenie.

W ten sposób znalazłeś dzięki VBA indeks ostatniego wiersza w tabeli. Plik Excel z powyższymi przykładami załączam poniżej:
Jeśli szukasz podobnych przykładów praktycznego zastosowania VBA zapraszam do odwiedzenia tego działu. Zachęcam także do zapoznania się z działem kurs VBA online.
13 komentarzy “Jak znaleźć ostatni wypełniony wiersz w Excel VBA”
Dzięx, bardzo przydatne. Szukam jeszcze skryptu vb, który pomoże mi wyciągnąć parametry tabel przestawnych w rapocie. W jaki asposób da się to zrobić?
Dzięki, przyda się
Nareszcie jakieś sensowne wyjaśnienie
Super, tego szukałem. Dzięki
Dzięki. Małe pytanie, jak przeszukać wybrany arkusz np arkusz3?
Pozdrawiam
Sub LastRow()
Dim intLastRow As Integer
intLastRow = Range(„A1”).End(xlDown) + 1
MsgBox intLastRow
End Sub
u mnie, pod Excel 2010 (14.0.7190.500, 32 bit) ten kod nie działa,
wywala error „Type mismatch”, pomaga zmiana na:
intLastRow = Range(„A1”).End(xlDown).Row + 1
bez .Row zwracana jest wartość ostatniego pola, u mnie string.
Pozdrawiam,
Jarek
DJG – Masz rację
Taki zapis jak w oryginale musi zwracać wartość komórki, a nie numer wiersza
A gdybym musiał sprawdzić dwie kolumny i zwrócić ta która ma większy wynik?
Sub LastRow()
Dim intLastRow As Integer
intLastRow = Range(„A1”).End(xlDown) + 1
MsgBox intLastRow
End Sub
wywala błąd type mismatch
W moim przypadku działa zapis
Range(„A1”).End(xlDown).Row