Formatar Tempo de Execução de uma macro


(Marcelo Adriano) #1

Minhas considerações aos membros do fórum Formula Excel
Fiz um medidor de tempo de execução - conforme demostro abaixo, gostaria que ao exibir o resultado através da msgbox viesse formatada da seguinte maneira: "HH:MM:SS" e como o tempo de execução, geralmente são menores de 1 minuto ficaria portanto assim: 00:00:34 por exemplo
Espero ter feito entender,
Grato
Marcelo Adriano
Sub MedirTempoDeExecucao ()
Application.ScreenUpdating = False 'ACELERANDO CÓDIGOS
Dim TempoInicial As Double
Dim i As Integer
TempoInicial = Timer

For i = 1 To 1000
    'Planilha1.Cells(i, 1).Select
    Planilha1.Cells(i, 1).Value2 = i
Next i

MsgBox Round(Timer - TempoInicial, 4) & " Segundos...", , "Tempo de Execução..."
Application.ScreenUpdating = True
End Sub


#2

Olá, @marceloadriano!

Eu faço assim:

MsgBox(Format(TimeSerial(0, 0, Timer - TempoInicial), “hh:mm:ss”))

Ou seja, uso o TimeSerial para montar um horário informando segundos, depois uso o Format para formatar esse horário!


(Marcelo Adriano) #3

Bruno Hanai obrigado pela sua atenção.
Ao executar a sub esta gerando um erro discriminado:
'Erro em tempo de execução '6:
'Estouro
Teria como ve sê consegue soluconar a questão ...
No mais obrigado...

Sub MedirTempoDeExecucao4()
Application.ScreenUpdating = False 'ACELERANDO CÓDIGOS
Dim TempoInicial As Double
Dim i As Double
TempoInicial = VBA.CDbl(VBA.Time)
For i = 1 To 10
Planilha1.Cells(i, 1).Value2 = i
Next i
MsgBox Format(TimeSerial(0, 0, Timer - TempoInicial), "hh:mm:ss")
Application.ScreenUpdating = True
End Sub


#4

Acredito que o erro está aqui pois você usou essa forma de pegar o tempo atual e depois (lá dentro do TimeSerial) usou o Timer.

Faça assim para ficar tudo no mesmo conceito:
TempoInicial = Timer


(Marcelo Adriano) #5

Olá Bruno Hanai
Realmente, erra esse o detalhe... agora o código esta rodando.
Obrigado!
Grato
Marcelo Adriano