Última Linha no VBA: Como encontrar?

Quer aprender a encontrar a última linha preenchida com o VBA? Então você está no lugar certo!

Neste artigo, separamos alguns dos principais métodos que você pode usar para encontrar a última linha em seu intervalo de dados. Confira!

Por que encontrar a última linha no VBA?

Encontrar a última linha através do VBA pode ser essencial para deixar suas planilhas mais dinâmicas.

Para melhor compreensão, suponha que você tenha criado o código abaixo no qual calcula a soma do intervalo (B2:B7) e insere o total na célula E2.

Sub TotalVendas()
Range("E2").Value = WorksheetFunction.Sum(Range("B2:B7"))
End Sub

Somar no VBA

Observe que se adicionarmos mais valores à lista e, em seguida, executarmos o código novamente, o VBA não nos dará o resultado atualizado. Em vez disso, ele ainda manterá o intervalo antigo, ou seja, o intervalo (“B2: B7”).

Como encontra a última linha no VBA

E é neste ponto que surge a necessidade de criar um código dinâmico, ou seja, encontrar a última linha usada na coluna será fundamental para dinamizar o cálculo.

Há diversas outras situações em que você poderá precisar encontrar a última linha de um conjunto de dados. Alguns outros exemplos são:

  • Redimensionar um intervalo de tabela dinâmica.
  • Percorrer as células em uma coluna.
  • Excluir apenas o intervalo de dados brutos.
  • Salvar dados na primeira linha, entre outros exemplos.

Como Encontrar a última linha no VBA?

Existem diferentes maneiras de encontrar a última linha de um conjunto de dados em uma planilha utilizando o VBA. A seguir mostraremos uma dessas maneiras e, em seguida, apresentaremos algumas outras opções que você poderá se aprofundar.

Quando trabalhamos com o Excel, normalmente utilizamos a tecla de atalho CTRL + Seta para Baixo para selecionar a última célula preenchida em uma coluna. Neste caso, podemos usar o VBA para simular o uso dessa tecla e encontrar a última linha preenchida. Confira o código abaixo:

Sub UltimaLinha()
Dim UltimaLinha As Long
UltimaLinha = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox UltimaLinha
End Sub

Como o código funciona?

  • CELLS(Rows.Count, 1) significa contar quantas linhas estão na primeira coluna.
  • Se estivermos na última célula da planilha para ir para a última linha preenchida, pressionaremos as teclas Ctrl + Seta para cima.
  • No VBA, precisamos usar a tecla End e Up, ou seja, End(xlUp).
  • Em seguida, precisamos do número da linha. Portanto, use a propriedade ROW para obter o número da linha.
  • Por fim, a variável passará a armazenar o último número de linha preenchida. Deste modo, mostraremos o valor dessa variável em uma caixa de mensagem (Msgbox).





Neste exemplo, a última linha utilizada é 13. Se removermos ou inserimos linhas na tabela, o código atualizará automaticamente.

última linha preenchida VBA

Deste modo, podemos ajustar o código da soma para torná-lo dinâmico. Neste caso, basta alterar o número da linha de um valor numérico para a variável UltimaLinha. Veja o exemplo abaixo:

VBA última linha

Outras maneiras de encontrar a última linha preenchida no VBA

O método apresentado anteriormente é apenas uma das opções que você poderá utilizar para encontrar a última linha no VBA. Confira abaixo algumas outras opções que poderão atender a sua necessidade.

Última linha em intervalos nomeados

Se você estiver usando um intervalo nomeado para fazer referência à localização de seus dados, poderá usar o nome do intervalo no código VBA conforme mostrado abaixo para retornar o valor numérico de quantas linhas existem no intervalo nomeado.

Dim UltimaLinha as Long
UltimaLinha = ActiveSheet.Range("Vendas").Rows.Count

Última linha em tabela no Excel

Se você estiver usando um objeto de tabela para armazenar seus dados, poderá usar o nome da tabela no código VBA abaixo para retornar o valor numérico de quantas linhas existem na tabela.

Dim UltimaLinha As Long 
UltimaLinha = ActiveSheet.ListObjects("Tabela1").Range.Rows.Count




Última linha preenchida na Planilha

O código abaixo pesquisará todas as células em sua planilha e retornará a linha da última célula com qualquer tipo de valor armazenado nela. Como a função FIND está configurada para pesquisar a partir da parte inferior da planilha e para cima

Dim UltimaLinha As Long 
UltimaLinha = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

Usando a propriedade CurrentRegion

A propriedade CurrentRegion no VBA é uma maneira de selecionar todas as células contidas em um intervalo com o qual você deseja trabalhar. Contanto que as células dentro do intervalo sejam todas consecutivas umas nas outras, o CurrentRegion selecionará todas as células da região. Neste caso, podemos utilizar a propriedade CurrentRegion para obter a última linha preenchida conforme exemplo abaixo:

Dim UltimaLinha As Long
UltimaLinha = ActiveSheet.Range("A1").CurrentRegion.Rows.Count

Usando a propriedade UsedRange

Mas, e se seus dados estiverem separados por linhas em branco? Ou melhor, você não tem certeza se seus dados estão separados por linhas em branco. Podemos usar a propriedade UsedRange do objeto Worksheet para capturar a última linha.

A vantagem de usar UsedRange é que, mesmo que nosso intervalo de dados tenha células em branco, linhas ou colunas em branco, ainda poderemos localizar a última célula usada.

Mas, por outro lado, se a célula não tiver nenhum valor, mas houver uma fórmula ou formatação nela, a técnica UsedRange ainda a considerará como uma célula usada. Dependendo do resultado que você procura, isso pode ou não ser o que você deseja.

Se seus dados começarem na linha 1

Dim UltimaLinha As Long
UltimaLinha = ActiveSheet.UsedRange.Rows.Count

Se seus dados não começarem na linha 1

Dim UltimaLinha As Long
UltimaLinha = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
MsgBox UltimaLinha




Pesquisando de Cima para Baixo

No primeiro exemplo deste tutorial utilizamos a propriedade End(xlUp). Isto significa que o VBA irá encontrar última linha da planilha indo de baixo para cima. Geralmente utilizamos essa opção para intervalos que podem conter células em branco. Deste modo, se começarmos do final e subirmos, iremos sempre identificar a última linha preenchida, mesmo que tenha alguma linha em branco no meio da tabela.

Por outro lado, podemos encontrar a última linha preenchida pesquisando de cima para baixo, ou seja, utilizando o método End(XLDOWN).

Importante:

  • Este método só funciona se você tiver pelo menos duas preenchidas, pois se tiver somente uma ele irá para a última linha da planilha.
  • Além disso, não pode haver linhas em branco nesta tabela, caso contrário o VBA irá parar na primeira linha vazia que encontrar.
Dim UltimaLinha As Long
UltimaLinha = Cells.End(xlDown).Row
MsgBox UltimaLinha

Confira também as seguintes dicas:

E então, o que achou do tutorial para encontrar última Linha ou Coluna no VBA? Caso tenha ficado com alguma dúvida, basta deixar o seu comentário abaixo.