0

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

2 回答 2

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 秒来设置下一次执行的时间。

这篇文章有更好的解释

于 2012-12-19T14:13:12.090 回答
0

开始了。从来没有想过答案会很简单。

Function Wait()
Dim StartSecond As Single
Dim EndSecond
StartSecond = Now

EndSecond = DateAdd("s", 30, Now)

While Now < EndSecond
DoEvents
Wend

End Function

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

于 2012-12-21T07:10:19.857 回答