Blocking and non-blocking wait function in Visual Basic
This code snippet demonstrates how to pause the execution for the specified amount of time (in milliseconds).
Function can be either blocking or unblocking (with DoEvents)
#If VBA7 Then Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) #Else Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long) 'For 32 Bit Systems #End If Sub main() Debug.Print Now Wait 20000, False Debug.Print Now End Sub Sub Wait(period As Long, blocked As Boolean) If blocked Then Sleep period Else Const STEP As Long = 100 If period > STEP Then Dim i As Long For i = 0 To period Step STEP Sleep STEP DoEvents Next Else Sleep period End If End If End Sub