wtorek, 20 listopada 2012

Ostatnia niepusta komórka arkusza

Sub Ostatnia_Komorka_Arkusza()
    Cells.SpecialCells(xlCellTypeLastCell).Value = "ostatnia"
    MsgBox Cells.SpecialCells(xlCellTypeLastCell).Address
End Sub

Makro zwróci ostatnią komórkę z prostokątnego obszaru wyznaczonego najbardziej skrajnymi, niepustymi elementami ale to nie musi być ostania niepusta komórka.

Dla przykładu: jeśli komórki D7 i H1 będą niepuste to wartość "ostatnia" zostanie wpisana w H7.

Pytano mnie jak znaleźć ostatnią pełną komórkę - tyle tylko, że najpierw należy ustalić czy szukając ostatniej najpierw uwzględniamy wiersze czy kolumny. Wg mnie nie jest oczywiste czy "ostatnia" to A2 czy może B1.

Generalnie jednak, gdy szukamy ostatniej niepustej komórki trzeba sprawdzać jaki jest ostatni wiersz / kolumna
Range("A1").Value = "ostatni wiersz: " + _
  Cells.SpecialCells(xlCellTypeLastCell).Row
    
Range("A2").Value = "ostania kolumna: " + _
  Cells.SpecialCells(xlCellTypeLastCell).Column

Wyszukiwanie ostatniej niepustej komórki jest opisane na sieci chyba na milion sposobów. Na potrzeby tego posta stworzyłem coś w miarę unikalnego i chyba przejrzystego.

Należy na początek znaleźć ostatni wiersz/kolumnę a potem zaczynając końca (czyli max z Range) szukać pierwszej napotkanej.

Ostatnia niepusta komórka w ostatnim wierszu:
MsgBox Cells(Cells.SpecialCells(xlCellTypeLastCell).Row, Columns.Count).End(xlToLeft).Address

Ostatnia niepusta komórka w ostaniej kolumnie:
MsgBox Cells(Rows.Count, Cells.SpecialCells(xlCellTypeLastCell).Column).End(xlUp).Address

Brak komentarzy:

Prześlij komentarz