VBA – Esperar, Atrasar, Criar um Cronômetro Durante a Execução do Código
Esperar ou Atrasar no VBA
Há muitos casos em que um cronômetro pode ser útil no Excel. Aqui está um método para tentar:
Sub MeuCronometro()
Application.Wait Now + TimeValue("00:00:05")
MsgBox ("5 segundos")
End Sub
Alguns usos de um cronômetro no Excel VBA são pausar o código e medir o tempo decorrido. A seguir, você será direcionado para os respectivos locais onde publiquei um exemplo de cada uso:
1. Pausar a execução do código por um período de tempo desejado com Application.Wait (simulando um cronômetro)
link: Ocultar o Excel
2. Medir o tempo decorrido com um cronômetro no VBA
Se estiver procurando comparar um código reescrito ou debater métodos “mais rápidos” no VBA, você poderá usar o timer interno do VBA. Ao definir uma variável igual ao timer no início do código e subtraí-la do timer no final, você terá uma boa estimativa do tempo de execução de um trecho de código.
O desempenho pode ser afetado por outros programas em execução ou que tentam ser executados enquanto a macro está ativa, entre outros fatores.
O exemplo a seguir foi usado para ver quanto tempo levaria para escrever a palavra “teste” na célula A1 da Planilha1 meio milhão de vezes. Levou 21 segundos em minha máquina.
Sub Referencia()
Dim Contar As Long
Dim Referencia As Double
Referencia = Timer
'Início do código para teste
For Contar = 1 To 500000
Planilha1.Cells(1, 1) = "test"
Next Contar
'Fim do código para teste
MsgBox Timer - Referencia
End Sub
Se o seu código estiver sendo executado lentamente, tente acelerá-lo desativando a atualização da tela.
Codificação VBA facilitada
Pare de procurar códigos VBA on-line. Saiba mais sobre o AutoMacro – um construtor de código VBA que permite que os iniciantes codifiquem procedimentos do zero com o mínimo de conhecimento de codificação e com muitos recursos que economizam tempo para todos os usuários!
Esperar ou Atrasar no Access VBA
Você também pode usar os métodos acima no Access VBA. Por exemplo, talvez queira saber quanto tempo leva para percorrer um conjunto de registros.
Sub PercorrerRegistros()
Dim Contar As Long
Dim Referencia As Double
Referencia = Timer
'Início do código para teste
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tblFaturas", dbOpenDynaset)
With rst
Do Until .EOF = True
.MoveNext
Loop
End With
'Fim do código para teste
MsgBox "Levou " & Timer - Referencia & " segundos para concluir"
End Sub