Página 1 de 1

Pular célula preenchida para a próxima

Enviado: 10 Set 2019 às 17:26
por BRNzFromBrazil
Bom dia/tarde/noite

Estive tendo um pequeno empecilho. Criei uma planilha no Excel, utilizando captação de dados em tempo real para cotação de câmbio.
Inseri a tabela em questão para as células (A1 até A54)

Na célula A1 encontra-se o texto: US Dollar
Enquanto que as colunas B e C destinam-se aos valores

Exemplo:

A1 = US Dollar
B1 = 1.00 USD
C1 = inv. 1.00 USD

A6 = Brazillian Real
B6 = 4.098.644
C6 = 0.243983

O que estou tentando fazer é criar um histórico de mudança para acompanhamento. Como um preenchimento automático. O Excel seleciona a célula B6 e copia o valor para a célula A60. Porém, o valor na Célula B6 muda a cada 1 minuto, devido aos dados estarem sendo atualizados automaticamente.

Tentei utilizar o VBA para automatizar este processo, porém, como posso definir para a macro em questão verificar se a célula A60 já está preenchida, e então pular para a A61 e realizar o processo de cópia do valor, e então, caso a A61 também se encontre preenchida, ele siga para a A62, e assim por diante? Seria necessário uma estrutura de repetição para o If ou Offset? Ou há alguma outra forma mais simples para resolver isto?
Gravei uma macro realizando o processo manualmente, depois tentei ajustar para este "pulo" de célula, e adicionar a chamada para a função a cada período especificado, mas sem sucesso, ainda sou um pouco leigo em VBA :)

Pular célula preenchida para a próxima

Enviado: 10 Set 2019 às 17:58
por Jimmy
Olá,

Você deve pesquisar a coluna A, desde a última célula (linha 1 milhão e pouco), e subir até achar uma célula preenchida. Pegar essa linha e somar 1 para obter a linha livre.

Isso tudo é feito em uma instrução só, super rápida. É ela:

LinhaVaga = Sheets("Plan1").range("A" & Rows.count).end(xlup).row + 1

Se você usar o gravador, clicar em uma célula bem de baixo, na coluna A, e teclar END e depois Seta para cima, realizara um deslocamento até a última célula preenchida. Veja na macro gravada que o comando é o mesmo.

Jimmy San Juan

Re: Pular célula preenchida para a próxima

Enviado: 10 Set 2019 às 18:10
por osvaldomp
Experimente:
Código: Selecionar todos
Sub Teste()
 [B6].Copy IIf([A60] = "", [A60], Cells(Rows.Count, 1).End(3)(2))
End Sub

Pular célula preenchida para a próxima

Enviado: 11 Set 2019 às 12:53
por BRNzFromBrazil
Obrigado Jimmy e Osvaldo...testei e o que melhor se encaixou no meu caso foi o código escrito pelo Osvaldo.

No fim do teste meu código acabou ficando o seguinte:

Sub Teste2()
[B6].Copy IIf([A60] = "", [A60], Cells(Rows.Count, 1).End(3)(2))
Application.OnTime Now() + TimeValue("00:00:10"), "Teste2"
End Sub

Ele está pulando a linha onde há dados, e colocando os valores no local certo, mesmo após resetar os dados e limpar as células.

Muito obrigado mesmo!