Pessoalmente não gosto de utilizar este tipo de código (já tive problemas) para ultima linha vazia.
Mas visualmente é mais fácil que o uso do while.
Exemplo de ultima linha vazia:
Range("a20").Select '....Seleciona primeira linha preenchida Selection.End(xlDown).Select '....vai até última linha preenchida x = Selection.Row '....grava na variavel a última linha x = x + 1 ' ...pega a célula em "branco".
O problema está se você tiver uma linha vazia no meio da sua coluna. Se for utilizar este código recomendo classificar antes.