Postado em em 14 de janeiro de 2023

Você já conhece a função Timer no VBA? Quer aprender como fazer contagem e fazer o VBA esperar com essa função?

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala, Impressionadores! Nessa aula você vai aprender como criar um contador no VBA e como fazer o VBA esperar!

O contador no VBA funciona de forma que se possa contar o tempo de execução de um código. Dessa forma, você vai conseguir analisar quanto tempo demora para executar o código.

Vamos ver também como fazer uma espera no VBA. Ou seja, como pausar no VBA para esperar um determinado tempo.

E aí, curioso? Vem que te mostramos!

Como criar um contador no VBA?

A ideia aqui é, através de uma função específica nativa do VBA, a função Timer, marcar os tempos inicial, e final.

A função Timer vai marcar, em segundos, o momento inicial do código, e o momento final.

Com os pontos iniciais e finais do código, bastaria ver quantos segundos se passaram entre os dois momentos.

O código abaixo fazer o que estamos esperando, que é programar a criação de contador no VBA. Acompanhe com a gente:

Sub vbaTimerTempoTotal()

Dim tempoIni As Double, tempoTotal As Double
Dim i As Long

tempoIni = Timer

'For i = 1 To 100000
'    Cells(i, 1).Value = "Teste"
'Next i

Range("A1:A100000").Value = "Teste"

tempoTotal = Timer - tempoIni 

MsgBox "Concluído em " & tempoTotal & " segundos!"

End Sub

Comentários a respeito do código:

  • Inicialmente dimensionar:
    • tempoIni e tempoTotal como números do tipo Double (com casas decimais)
    • i como um número do tipo Long (número inteiro grande)
  • tempoIni vai receber, em segundos, o momento exato que o código começa a funcionar (passados desde meia noite)
  • Preencher, com o texto “Teste”, da célula A1 até a célula A100000
  • tempoTotal vai receber, em segundos, a subtração entre a função Timer e a variável tempoIni, que vai dar em segundos, de fato, a duração do código. Ela marcará o momento final do código, em segundos
  • Fazer aparecer uma caixa de mensagem que vai informar em quantos segundos o código foi concluído
  • Se encerra o código com timer no VBA

Inicialmente o código, usando a estrutura de repetição do tipo For, resultava em:

Código de contador no VBA
Código de contador no VBA

Com uma alternativa mais rápida identificada, resulta agora em:

Macro para criar contador
Macro para criar contador

Essa “forma” de estruturar o código, marcando o seu tempo de duração, faz com que você teste outras soluções para realizar o mesmo feito.

Assim, pode encontrar formas mais rápidas de realizar tais ações desejadas, com seu código.

E como fazer o VBA esperar?

A ideia agora, é através da mesma função mostrada anteriormente, a função Timer, fazer o VBA esperar um tempo, para assim continuar.

Existem algumas situações que precisamos esperar alguns segundos, até algo estar pronto para o código desempenhar suas ações.

O código apresentado abaixo pretende mostrar um exemplo de código de pausa no VBA. Observe:

Sub vbaTimerPausa()

Dim tempoIni As Double, tempoPausa As Double
 
tempoPausa = 2 'segundos

MsgBox ("Clique em Ok para iniciar os " & tempoPausa & " segundos de pausa.")

tempoIni = Timer

Do While Timer < tempoIni + tempoPausa
    DoEvents
Loop

MsgBox "Terminou a pausa de " & tempoPausa & " segundos!"

End Sub

Comentários a respeito do código:

  • Inicialmente dimensionar tempoIni e tempoPausa como números do tipo Double (com casas decimais)
  • Armazenar na variável tempoPausa o valor de número 2
  • Fazer aparecer uma caixa de mensagem que vai informar que vai começar o tempo de pausa do código, da quantidade de segundos armazenada na variável tempoPausa
Espera no VBA
Espera no VBA
  • tempoIni vai receber, em segundos, o momento exato que o código começa a funcionar (passados desde meia noite), de acordo com a função Timer VBA
  • Vamos abrir uma estrutura de repetição do tipo Do While que vai funcionar em looping deixando o Excel fazer eventos, enquanto a função Timer for menor do que tempoIni + tempoPausa. Enquanto a função Timer retornar um valor menor do que o tempo de pausa, nada será feito.
  • Quando a função Timer retornar um valor em segundos maior do que a duração do tempoPausa, uma MsgBox vai aparecer informando que “Terminou a pausa de ” & tempoPausa & ” segundos!”
Contagem e espera no VBA
Contagem e espera no VBA
  • Se encerra o código de como pausar no VBA

Conclusão de como colocar timer no VBA

Nessa aula você aprendeu criar contador no VBA! Com a função VBA Timer, nativa do VBA, que te ajuda a montar esse contador!

Também viu como fazer o VBA esperar por um tempo determinado por você! Em algumas situações você pode precisar inserir isso nos seus códigos.

Valeu, Impressionadores! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?