Ú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
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”).
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.
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:
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:
- Arrays no VBA Excel: O que são e como usar?
- Como Copiar e Colar no VBA – Passo a Passo
- PROCV no VBA: Como Fazer?
- Offset no VBA: Como Utilizar Essa Propriedade?
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.