如何延迟30秒

时间:2012-12-19 14:07:41

标签: function vba time

我想在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

2 个答案:

答案 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

这对我来说很好。任何有关此事的评论都非常感谢。