VBA – Função Timer

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 7, 2023

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:

resultado timer

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 é:

hora-real

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.

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA