terça-feira, 1 de setembro de 2020

Encontrar última célula preenchida com VBA

Veja como é simples o comando de encontrar a última célula no Excel através do VBA.

Você pode encontrar a última célula partindo de uma célula base e em seguida utilizamos o comando END e o sentido do movimento. Eu sei, ficou complicado, vamos descomplicar.

Dica: Se você gravar uma macro e apertar END + SETA PARA BAIXO, poderá te ajudar entender.



Comando:  planilha1.range("A1").end(xlDown).Address


Planilha1: é o "Id" da guia que você está procurando a última célula preenchida. Lembrando, não é o nome que você renomeia a guia.

Range("A1"): é a célula base que você deseja partir.

END: é o mesmo comando do teclado "END", que faz com que mova até a ultima célula preenchida.

XLDOWN: é o sentido que deseja mover, nesse caso, para baixo.


Address: Esse comando retorna o endereço em forma de string, mas você pode substituí-lo por .value, .row, vai depender do que você quer retornar.


Última célula preenchida 1


Esclareceu suas dúvidas?

Mas vamos lá, quero complicar um pouco mais, no modelo acima todas as células estão preenchidas, imagine o seguinte cenário, que haja células em branco ou vazias entre as células preenchidas... e agora? Ficaria errado.


Última célula preenchida VBA - 2



Para solucionar esse problema, devemos pensar por outro caminho. Partimos do sentido inverso, ou seja, de baixo para cima. Então vamos lá.



Comando:  planilha1.range("A" & planilha1.rows.count).end(xlDown).Address


Planilha1: é o "Id" da guia que você está procurando a última célula preenchida. Lembrando, não é o nome que você renomeia a guia.

Range("A" & planilha1.rows.count): é a célula base que você deseja partir, nesse caso diferente do de cima, ele concatena a coluna "A" com a quantidade de linhas que o Excel tem.No meu caso ficaria "A1048576", mas se fosse um arquivo ".xls", ficaria "A65536" e não daria erro no comando.

END: é o mesmo comando do teclado "END", que faz com que mova até a ultima célula preenchida.

XLUP: é o sentido que deseja mover, nesse caso, para cima.


Address: Esse comando retorna o endereço em forma de string, mas você pode substituí-lo por .value, .row, vai depender do que você quer retornar.


Última célula preenchida VBA - 3




Pessoal, obrigado pelo apoio e me deixe sugestões de post e dúvidas.

Até a próxima.






Deixe sua sugestão, elogio ou reclamação para o blog.
EmoticonEmoticon