As funções de VBA Timer retornam o número de segundos decorridos desde a meia-noite do dia atual (retornado como um tipo de dados Único).
Usando a função de temporizador VBA
O código a seguir mostrará como usar a função de temporizador do VBA para determinar quantos segundos se passaram, desde a meia-noite, no momento em que o código está sendo executado:
12345678 | Sub UsingTheVBATimerFunction ()Dim segundos desde que simplessegundosSince = Timer ()Debug.Print secondsSinceEnd Sub |
O resultado é:
Use o VBA Timer para obter o tempo real
Você pode converter os segundos retornados da função Timer no formato hh: mm: ss para ver a hora real usando o seguinte código:
123456789101112131415 | Sub GettingTheActualTime ()Dim segundos desde que simplesDim cTime As DoubleDim theActualTime As VariantsegundosSince = Timer ()cTime = secondsSince / (86400)theActualTime = Format (cTime, "hh: mm: ss")MsgBox "O tempo decorrido desde a meia-noite em segundos é" & "" & segundosSince & vbNewLine & _"A hora real é:" & "" & theActualTimeEnd Sub |
O resultado é:
Cronometrar uma seção do código VBA
Se você está procurando um benchmark de código reescrito ou debater métodos “mais rápidos” no VBA, você pode usar o temporizador integrado do VBA. Definir uma variável igual ao cronômetro no início de seu código e subtrair isso do cronômetro no final lhe dará um boa estimativa de quanto tempo um trecho de código leva para ser executado.
O desempenho pode ser afetado pela execução ou tentativa de execução de outros programas enquanto a macro está ativa, entre outras coisas.
O exemplo a seguir foi usado para ver quanto tempo levaria para escrever a palavra “teste” na célula A1 na Planilha1 meio milhão de vezes. Demorou 21 segundos na minha máquina.
123456789101112131415161718 | Sub BenchMark ()Dim Count enquanto LongDim BenchMark As DoubleBenchMark = Timer'Início do código para testarPara contagem = 1 a 500000Sheet1.Cells (1, 1) = "teste"Próxima contagem'Fim do código para testarMsgBox Timer - BenchMarkEnd Sub |
Se o seu código estiver lento, tente acelerá-lo desativando a atualização da tela. Para manter a tela do Excel ativa enquanto o cronômetro está em execução, podemos inserir o método DoEvents no código.