I've never been a real fan of using Date and Time functions with respect to timing issues. Since in this case, it seems that you want to enter into DoEvents loop for 5 seconds, I would control the timing using the GetTickCount API, and my sub would look something like the following:
In the Declarations section of the form, declare the following API
Private Declare Function GetTickCount Lib "kernel32" () As Long
and the sub
Private Sub DoEventsLoop (ByVal NumSeconds as Long)
Dim StartTime As Long
Dim DoLoop As Boolean
Dim TimeDiff As Long
Dim EndCount as Long
StartTime = GetTickCount
EndCount = NumSeconds * 1000
DoLoop = True
Do While (DoLoop = True)
DoEvents
TimeDiff = GetTickCount - StartTime
DoLoop = (TimeDiff < EndCount)
Loop
End Sub
Good Luck
--------------
As a circle of light increases so does the circumference of darkness around it. - Albert Einstein