Schizoid Man said:
I have a workbook that takes about 20 minutes to calculate.
Is there a quick macro I can write that measures the actual
time taken by the macro to execute the calculations?
The simplest method is to put calls to Timer() around the code to measured.
For example:
Sub doit1()
Dim st as Double, et as Double
st = Timer()
Application.Wait Now() + TimeSerial(0, 0, 2)
et = Timer()
Debug.Print "elapsed time: " & et - st
End Sub
That should work on Windows systems as well as the Mac, although the
precision of Timer() differs on the Mac. See the VB help page.
Alternatively:
Public Declare Function QueryPerformanceFrequency Lib _
"kernel32" (ByRef freq As Currency) As Boolean
Public Declare Function QueryPerformanceCounter Lib _
"kernel32" (ByRef cnt As Currency) As Boolean
Sub doit2()
Dim freq As Currency, sc As Currency, ec As Currency
x = QueryPerformanceFrequency(freq) 'constant
x = QueryPerformanceCounter(sc)
Application.Wait Now() + TimeSerial(0, 0, 2)
x = QueryPerformanceCounter(ec)
Debug.Print "elapsed time: " & (ec - sc) / freq
End Sub
That has the potential for measuring less than 1-msec precision.
----- original message -----