Создайте для этого функцию для повторного использования. Используйте Sleep в нем, а не DoEvents в цикле, который съедает весь процессор.
Private Declare Sub Sleep Lib "kernel32" (ByVal lngMilliSeconds As Long)
Public Sub WaitSeconds(intSeconds As Integer)
Dim dTime As Date
dTime = DateAdd("s", intSeconds, Now)
Do
Sleep 100
DoEvents
Loop Until Now >= dTime
End Sub
Теперь вы можете вызывать функцию:
WaitSeconds 5
MyFunction