Como Achar a Última Linha usando VBA

Normalmente precisamos adicionar registros na primeira linha vazia de uma tabela.

Isso pode ser feito usando tecla de atalho como o CTRL + Seta para baixo, ou CTRL + END.

Mas e se precisarmos fazer isto através do VBA?

Mostrarei a seguir algumas formas de se achar a última linha usando VBA.

Achar a última linha de cima para baixo

Neste caso, vamos iniciar no topo de nossa tabela e descer até a última linha.

Isto só funciona se você tiver pelo menos DUAS LINHAS preenchidas, porque se tiver somente uma ele irá para a última linha da planilha.

Além disso, você NÃO PODE ter linhas em branco nesta tabela; caso contrário ele irá parar na 1a linha vazia que encontrar. Se você tiver este problema, veja a próxima alternativa.

Se a sua tabela começa na célula A1, você pode usar o comando:

Range(“a1”).End(XLDOWN).Row

Neste comando, começamos na A1 e fazemos o equivalente ao CTRL+Seta para baixo. E no exemplo trazemos o número da última linha preenchida.

Se você precisar da 1a linha em branco basta somar 1:

Range(“a1”).End(XLDOWN).Row +1

Se você quiser selecionar a 1a linha em branco, pode fazer assim:

Range(“a1”).End(XLDOWN).Offset(1,0).Select

O comando Offset tem dois argumentos: linhas a subir/descer e colunas à direita/esquerda. No exemplo, desceremos 1 e não andaremos para os lados (1,0).

Usamos o Offset para que a macro desça para a 1a linha vazia; caso contrário ela irá selecionar a última linha preenchida.

Achar a última linha de baixo para cima

Uso esta opção em praticamente todos os códigos que contruo, porque evita que a macro pare em uma linha em branco que eventualmente exista no meio da tabela.

Se começarmos do final e subirmos, iremos sempre identificar a ultima linha preenchida, mesmo que tenha alguma linha em branco no meio de sua tabela.

O código é praticamente o mesmo do exemplo inicial:

Range(“a1000000”).End(XLUP).Row

Você pode usar a linha 1 milhão ou qualquer outro número de linha que você saiba ser bem depois do último registro. O End(xlUp) equivale ao CTRL+Seta para cima

Se você quiser selecionar a 1a linha vazia, use este código:

Range(“a1000000”).End(XLUP).Offset(1,0).Select

Achar a última linha da tabela

Eventualmente você precisa achar a última linha da sua tabela, mas nela há colunas com mais linhas do que outras.

Se este for o caso, você deveria “adivinhar” qual é a coluna com maior número de linhas para poder usar um dos dois exemplos anteriores.

Ou usar este:

Range(“a1”).SpecialCells(xlLastCell).Select

Neste caso, o comando SpecialCells(XLLASTCELL) irá localizar a última célula de sua PLANILHA, independente de qual coluna você tenha começado (neste exemplo, foi da coluna A).

A problema neste caso é se você tiver formatação residual em células, já que neste caso ele irá identificar a última célula com informação. Neste caso, lembre-se de excluir linhas ao invés de simplesmente apagar o conteúdo delas.

 

Fabio Vianna
Siga-Me

Fabio Vianna

Modela planilhas deste 1994 e ministra treinamentos desde 1997.
Especialista em Modelagem Profissional de Planilhas, incluindo Dashboards no Excel.
Fabio Vianna
Siga-Me

Últimos posts por Fabio Vianna (exibir todos)

Optimization WordPress Plugins & Solutions by W3 EDGE