Jak znaleźć ostatni wypełniony wiersz w Excel VBA 11


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:

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.

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.

Excel VBA - ostatni niepusty wiersz

Excel VBA – ostatni niepusty wiersz

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:

excel_vba_ostatni_wiersz.xlsm

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.


Dodaj komentarz

Twój adres email nie zostanie opublikowany.

11 komentarzy do “Jak znaleźć ostatni wypełniony wiersz w Excel VBA

  • PawełW

    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ć?

    • Przemek

      Tak, tak jest ok. Wcześniej już to sprawdziłem. Zastanawiałem się tylko czy jest inna możliwość bo przy przeszukiwaniu arkusza i dopisywaniu w komórkach arkusze się przełączają.

      Zastanawiam się jednak bardziej jak umieścić w komórce niestandardowy hyperlink.
      poprzez …formula =
      =HIPERŁĄCZE(“#WYKAZ!C”&WIERSZ(INDEKS(WYKAZ!B:B;PODAJ.POZYCJĘ(B2;WYKAZ!B:B;0)));WYSZUKAJ.PIONOWO(B2;WYKAZ!B:C;2;FAŁSZ))

      Pozdrawiam

  • DJG

    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

    • Slawek

      DJG – Masz rację
      Taki zapis jak w oryginale musi zwracać wartość komórki, a nie numer wiersza