我需要每秒运行一个大程序(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
非常感谢。
答案 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。