VBA – Timers | DEVelopers HUT

PHOTO EMBED

Tue Aug 08 2023 11:27:48 GMT+0000 (Coordinated Universal Time)

Saved by @paulbarry

#If VBA7 And Win64 Then
    'for 64-bit
    Private Declare PtrSafe Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
    Private Declare PtrSafe Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
#Else
    'for 32-bit
    Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
    Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
#End If

Private m_cCounterStart As Currency
Private m_cCounterEnd As Currency

'Initialize the Timer
Sub ProcessTimer_Start()
    Dim lResult         As Long
    
    lResult = QueryPerformanceCounter(m_cCounterStart)
End Sub

'Stop the Timer and calculate the elapsed time
Function ProcessTimer_End(Optional sOutputFormat As String = "ms") As Double
    Dim lResult         As Long
    Dim cFrequency      As Currency
    Dim dOutput         As Double
    
    lResult = QueryPerformanceCounter(m_cCounterEnd)
    lResult = QueryPerformanceFrequency(cFrequency)
    ProcessTimer_End = (m_cCounterEnd - m_cCounterStart) / cFrequency
End Function
content_copyCOPY

https://www.devhut.net/vba-timers/