2

我需要每秒运行一个大程序(RunLargeSub),这个程序大约需要0.5s才能完成。我目前正在使用 Application.OnTime,但这不会导致 RunLargeSub 每 ~1.5s 被调用一次吗?是否可以将其修复为 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

非常感谢所有帮助。

4

1 回答 1

1

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

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

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

于 2012-12-13T15:02:42.000 回答