![]() |
Can time be measured to milliseconds?
I know you can pause a macro for a certain number of milliseconds using
Public Declare Sub Sleep Lib "kernel32" _ (ByVal dwMilliseconds As Long) Option Private Module but I want to know the time between a certain number of iterations. The code runs too fast per iteration to calculate using seconds, and I can't seem to figure out how to measure more precisely. My code is as follows: Function timeRemaining(lastTime, curRow, endRow, cycles) lastTime = CDbl(lastTime) Dim timeNow As Double Dim cyclesLeft As Long timeNow = CDbl(Time) cyclesLeft = Int((endRow - curRow) / cycles) timeRemaining = format(CDate((timeNow - lastTime) * cyclesLeft), "h:mm:ss") lastTime = CDbl(Time) End Function Thanks for your help, Pflugs |
Can time be measured to milliseconds?
Maybe this is what you want:
Option Explicit Private lStartTime As Long Private Declare Function timeGetTime Lib "winmm.dll" () As Long Sub StartSW() lStartTime = timeGetTime() End Sub Sub StopSW(Optional ByRef strMessage As Variant = "") MsgBox "Done in " & timeGetTime() - lStartTime & " msecs", , strMessage End Sub Sub ForTesting() Dim i as long StartSW For i = 1 to 10000 'testing code Next StopSW End Sub RBS "Pflugs" wrote in message ... I know you can pause a macro for a certain number of milliseconds using Public Declare Sub Sleep Lib "kernel32" _ (ByVal dwMilliseconds As Long) Option Private Module but I want to know the time between a certain number of iterations. The code runs too fast per iteration to calculate using seconds, and I can't seem to figure out how to measure more precisely. My code is as follows: Function timeRemaining(lastTime, curRow, endRow, cycles) lastTime = CDbl(lastTime) Dim timeNow As Double Dim cyclesLeft As Long timeNow = CDbl(Time) cyclesLeft = Int((endRow - curRow) / cycles) timeRemaining = format(CDate((timeNow - lastTime) * cyclesLeft), "h:mm:ss") lastTime = CDbl(Time) End Function Thanks for your help, Pflugs |
Can time be measured to milliseconds?
Yes, that will work well. Thanks very much!
"RB Smissaert" wrote: Maybe this is what you want: Option Explicit Private lStartTime As Long Private Declare Function timeGetTime Lib "winmm.dll" () As Long Sub StartSW() lStartTime = timeGetTime() End Sub Sub StopSW(Optional ByRef strMessage As Variant = "") MsgBox "Done in " & timeGetTime() - lStartTime & " msecs", , strMessage End Sub Sub ForTesting() Dim i as long StartSW For i = 1 to 10000 'testing code Next StopSW End Sub RBS "Pflugs" wrote in message ... I know you can pause a macro for a certain number of milliseconds using Public Declare Sub Sleep Lib "kernel32" _ (ByVal dwMilliseconds As Long) Option Private Module but I want to know the time between a certain number of iterations. The code runs too fast per iteration to calculate using seconds, and I can't seem to figure out how to measure more precisely. My code is as follows: Function timeRemaining(lastTime, curRow, endRow, cycles) lastTime = CDbl(lastTime) Dim timeNow As Double Dim cyclesLeft As Long timeNow = CDbl(Time) cyclesLeft = Int((endRow - curRow) / cycles) timeRemaining = format(CDate((timeNow - lastTime) * cyclesLeft), "h:mm:ss") lastTime = CDbl(Time) End Function Thanks for your help, Pflugs |
All times are GMT +1. The time now is 01:37 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com