Die meisten der vorgestellten Lösungen verwenden Application.Wait, das die Zeit (Millisekunden) nicht berücksichtigt, die bereits seit Beginn der aktuellen Sekundenzählung verstrichen ist, sodass sie eine intrinsische Ungenauigkeit von bis zu 1 Sekunde aufweisen .
Der Timer-Ansatz ist die beste Lösung , aber Sie müssen das Zurücksetzen um Mitternacht berücksichtigen. Hier ist eine sehr genaue Schlafmethode mit Timer:
'You can use integer (1 for 1 second) or single (1.5 for 1 and a half second)
Public Sub Sleep(vSeconds As Variant)
Dim t0 As Single, t1 As Single
t0 = Timer
Do
t1 = Timer
If t1 < t0 Then t1 = t1 + 86400 'Timer overflows at midnight
DoEvents 'optional, to avoid excel freeze while sleeping
Loop Until t1 - t0 >= vSeconds
End Sub
VERWENDEN SIE DIESES, UM JEDE SCHLAFFUNKTION ZU TESTEN: (Debug öffnen Sofortiges Fenster: STRG + G)
Sub testSleep()
t0 = Timer
Debug.Print "Time before sleep:"; t0 'Timer format is in seconds since midnight
Sleep (1.5)
Debug.Print "Time after sleep:"; Timer
Debug.Print "Slept for:"; Timer - t0; "seconds"
End Sub
DoEvents
wie hier gezeigt. Dailydoseofexcel.com/archives/2005/06/14/stopwatchApplication.Wait(Now + #0:00:01#)
Prost!Application.Wait (Now + TimeValue("0:00:01"))
Application.wait(now + 1e-5)
für eine Sekunde,Application.wait(now + 0.5e-5)
für eine halbe Sekunde usw.