VBA:Application.OnTime可靠的时机?

时间:2012-07-31 12:48:58

标签: vba timer ontime

我需要每秒运行一个大程序(RunLargeSub),此过程大约需要0.5秒才能完成。我目前正在使用Application.OnTime,但是这个结果不会在RunLargeSub中每隔1.5秒被调用一次?是否可以将其修复为1.0s?

Sub Update()
    RunLargeSub
    NextTick = Now + TimeValue("00:00:01")
    Application.OnTime NextTick, "Update"
End Sub


Sub Stop()
    On Error Resume Next
    Application.OnTime NextTick, "UpdateClock", , False
    On Error GoTo 0
End Sub

非常感谢。

1 个答案:

答案 0 :(得分:1)

在RunLargeSub之后声明NextTick。这就是为什么需要1.5秒。如果你在RunLargeSub之前声明它,它将需要1s。但是如果RunLargeSub占用超过1秒,那么你将遇到问题,因为主要子将停止执行。我不确定onTime是否会接受一秒钟,但你可以这样做:

Sub Update()
    RunLargeSub
    NextTick = Now + TimeValue("00:00:01")/2
    Application.OnTime NextTick, "Update"
End Sub

它应该运行RunLargeSub并在半秒内再次调用sub。