Ejecuté un código en VBA según https://www.thespreadsheetguru.com/the-code-vault/2015/1/28/vba-calculate-macro-run-time y tuvo un retorno de un valor negativo:

-20439 segundos

¿Alguien sabe por qué? En realidad, funcionó durante ~ 18 horas (1500 - 0900 al día siguiente)

Option Explicit

Sub CalculateRunTime_Minutes()
'PURPOSE: Determine how many minutes it took for code to completely run
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault

Dim StartTime As Double
Dim MinutesElapsed As String

'Remember time when macro starts
  StartTime = Timer

'*****************************
'Insert Your Code Here...
'*****************************

'Determine how many seconds code took to run
  MinutesElapsed = Format((Timer - StartTime) / 86400, "hh:mm:ss")

'Notify user in seconds
  MsgBox "This code ran successfully in " & MinutesElapsed & " minutes", vbInformation

End Sub
3
alex 21 feb. 2018 a las 12:29

2 respuestas

La mejor respuesta

El código usa Timer.

El Timer devuelve un Single que representa el número de segundos transcurridos desde la medianoche. SyntaxTimerRemarks En Microsoft Windows, la función Timer devuelve fracciones de segundo. En Macintosh, la resolución del temporizador es de un segundo. MSDN

Por lo tanto, si comienza a ejecutar en 15:00, el código devolverá algo significativo, si termina en 23:59. Si finaliza al día siguiente en 09:00, devolverá un valor negativo.

Puede reconstruir el código para obtener la fecha en la cuenta también. Utilice Now, que devuelve la fecha y la hora - 21.02.2018 10:33:55

Esta parece una buena alternativa posible:

Sub WorkstAtMidnight()

    Dim StartTime As Date
    StartTime = Now()
    'Do something incredible
    MsgBox Round((Now() - StartTime) * 24 * 60 * 60, 0)
    '24 hours times 60 minutes times 60 seconds (usually I just do 24*3600)

End Sub
4
Vityata 21 feb. 2018 a las 09:34

Otra alternativa:

MinutesElapsed = Format((Timer - StartTime) / 86400 + IIf(Timer < StartTime, 1, 0), "hh:mm:ss")

Esto realiza un seguimiento de las horas y minutos con precisión hasta un día completo (es decir, se restablece a las 24 horas de tiempo de ejecución). Después de lo cual, la verdadera pregunta es ¿Por qué su código tarda tanto?

2
CallumDA 21 feb. 2018 a las 09:54