我想在vba中产生30秒的延迟。我不能使用'计时器',因为我的应用程序将在第二天早上一夜之间运行。 (计时器将生成经过直到午夜的秒数(分数))。除了Timer和Application.WaitNow()之外,还有其他任何方法可以实现此目的 我尝试使用以下代码,但它抛出代码执行已被中断错误。
Function Wait()
Dim StartSecond
Dim EndSecond
StartSecond = Second(Now)
'Sheets("SampleOutputEx").Range("M2") = StartSecond
EndSecond = (StartSecond + 30) Mod 60
While Second(Now) <> EndSecond
DoEvents
Wend
End Function
答案 0 :(得分:1)
试试这个
Declare Sub Sleep Lib "kernel32" Alias "Sleep" _
(ByVal dwMilliseconds As Long)
每当您想要睡眠时调用此功能
Function Wait(Seconds as integer)
Sleep Seconds*1000
End Function
您也可以使用
expression.OnTime(When, Name, Tolerance)
并通过向当前时间添加30秒来设置下次执行的时间。
This文章对此有更好的解释
答案 1 :(得分:0)
我们走了。没想到答案可能很简单。
Function Wait()
Dim StartSecond As Single
Dim EndSecond
StartSecond = Now
EndSecond = DateAdd("s", 30, Now)
While Now < EndSecond
DoEvents
Wend
End Function
这对我来说很好。任何有关此事的评论都非常感谢。