VBA – Função Timer
In this Article
A função Timer do VBA retorna o número de segundos decorridos desde a meia-noite do dia atual (retornado como um tipo de dados Single).
Uso da Função Timer do VBA
O código a seguir mostrará como usar a função Timer do VBA para determinar quantos segundos se passaram desde a meia-noite, no momento em que o código está sendo executado:
Sub UsandoFuncaoTimer()
Dim segundosDesde As Single
segundosDesde = Timer()
Debug.Print segundosDesde
End Sub
O resultado é o seguinte:
Usar o Timer do VBA para Obter a Hora Real
Você pode converter os segundos retornados da função Timer no formato hh:mm:ss para ver a hora real usando o código a seguir:
Sub OtendoHoralReal()
Dim segundosDesde As Single
Dim cTempo As Double
Dim HoraReal As Variant
segundosDesde = Timer()
cTempo = segundosDesde / (86400)
HoraReal = Format(cTempo, "hh:mm:ss")
MsgBox "O tempo decorrido desde a meia-noite em segundos é" & " " & segundosDesde & vbNewLine & _
"A hora real é:" & " " & HoraReal
End Sub
O resultado é:
Cronometrar uma Seção de Código VBA
Se estiver procurando fazer uma comparação do código reescrito ou debater métodos “mais rápidos” no VBA, você poderá usar o timer interno do VBA. Definir uma variável igual ao cronômetro no início do código e subtraí-la do cronômetro no final lhe dará 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 ComparacaoTempo()
Dim Contar As Long
Dim Tempo As Double
Tempo = Timer
'Início do código para teste
For Contar = 1 To 500000
Planilha1.Cells(1, 1) = "teste"
Next Contar
'Fim do código para teste
MsgBox Timer - tempo
End Sub
Se o seu código estiver sendo executado lentamente, tente acelerá-lo desativando a atualização da tela. Para manter a tela do Excel ativa enquanto o cronômetro estiver em execução, podemos inserir o método DoEvents no código.