Ostatnia niepusta komórka w wierszu

Jak wyznaczyć ostatnią niepustą komórką w wierszu?  Bardzo podobnie jak w przypadku ostatniego wiersza w kolumnie
Wykorzystywana jest  właściwość obiektu Range czyli Range.End

Na przykładzie takiego arkusza:

kliknij, aby powiększyć

Chcąc znaleźć adres ostatniej komórki w wierszu 1 możemy skorzystać
np. z takiego kodu:

Public Sub OstatniWiersz()
Dim OstKom1
Dim OstKom2
OstKom1 = Range(„A1”).End(xlToRight).Address
OstKom2 = Cells(1, Columns.Count).End(xlToLeft).Address
End Sub

OstKom1 – od komórki A1 szukana jest ostatnia niepusta komórka w prawo
OstKom2- od ostatniej komórki w wierszu (wyznaczonej przez liczbę kolumn) w lewo. Ten sposób jest najczęściej stosowany i najbezpieczniejszy. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela


Ostatnia niepusta komórka w kolumnie

W różnego rodzaju projektach VBA w Excelu bardzo często pojawia się potrzeba wyznaczenia ostatniej niepustej komórki w kolumnie. 
Wykorzystywana jest tu jedna właściwości obiektu Range czyli Range.End

Zobaczmy, jak to wygląda w praktyce na podstawie takiego arkusza:

kliknij, aby powiększyć

Są tu widoczne 2 różne tabelki, oddzielone kilkoma pustymi wierszami. Ostatnia niepusta komórka tabeli 1 to zaznaczona na żółto komórka A6, ostatnia z drugiej tabeli to A25 (zaznaczona na zielono). 
Ta zielona komórka jest jednocześnie ostatnią niepustą w całej kolumnie. 

Przykładowy kod wyznaczający nr wiersza to: 

Public Sub OstatniWiersz()
Dim OstWZolty As Long
Dim OstWZielony As Long
OstWZolty = Range(„A1”).End(xlDown).Row
OstWZielony = Range(„A” & Rows.Count).End(xlUp).Row
End Sub

Dla OstWZolty – od komórki A1 szukana jest ostatnia niepusta w dół. 
Dla OstWZielony – od ostatniej komórki w kolumnie (wyznaczonej przez liczbę wierszy) w górę. Ten sposób jest najczęściej stosowany i najbezpieczniejszy. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Właściwość Range.End

Range.End to właściwość obiektu Range zwracająca ostatnią niepustą komórkę danego regionu komórek. 

kliknij, aby powiększyć

Właściwość ta ma jeden obowiązkowy argument wejściowy: Direction wskazujący kierunek wyszukiwania ostatniej niepustej komórki. 
Może on przybierać jedną z 4 wartości:

    • xlDown
      w dół
    • xlUp
      w górę
    • xlToLeft
      w lewo
    • xlToRight
      w prawo

Ważna uwaga: jeżeli w komórce znajduje się formuła, której wynikiem jest np.pusty String – nie jest to pusta komórka, mimo, że wizualnie w arkuszu wygląda na pustą. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

 

Właściwość CurrentRegion

CurrentRegion to właściwość obiektu Range zwracająca bieżący zakres ograniczony kombinacją pustych wierszy i pustych kolumn.

kliknij, aby powiększyć

Właściwość ta jest związana z „otoczeniem” zakresu zdefiniowanego jako Range, ograniczonego pustą kolumną i pustym wierszem. 
Zwracana jest tu wartość typu Range. 

Najlepszą wizualizacją zakresu CurrentRegion może być jego zaznaczenie.

Przykładowy kod w odniesieniu do aktywnej komórki w arkuszu jak na powyższym sceenie: 

Sub Zaznacz_CurrentRegion()
ActiveCell.CurrentRegion.Select
End Sub

Otrzymany efekt końcowy:


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

 

Właściwość Range.Rows

Range.Rows to właściwość obiektu Range, związana z wierszami zakresu

kliknij, aby powiększyć

Ma również swoje właściwości i metody. 

W praktyce najczęściej wykorzystywana jest właściwość Rows.Count czyli liczba wierszy (wartość typu Long) w zakresie

Przykładowy kod: 

Public Sub IloscWierszy()
Dim a As Long
Dim b As Long
’ilość wierszy w zakresie:
a = Range(„A11:A20”).Rows.Count
’ilość wierszy w arkuszu
b = Range(„A:A”).Rows.Count
End Sub

 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela