VBA: Надежное время с Application.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 ответ
Вы объявляете NextTick после RunLargeSub. Вот почему это занимает 1,5 с. Если вы объявите это перед RunLargeSub, это займет ровно 1 с. Но тогда у вас возникнет проблема, если RunLargeSub займет больше 1 с, потому что основная подпрограмма перестанет выполняться. Я не уверен, что onTime принимает доли секунды, но вы можете сделать это:
Sub Update()
RunLargeSub
NextTick = Now + TimeValue("00:00:01")/2
Application.OnTime NextTick, "Update"
End Sub
Он должен запустить RunLargeSub и через полсекунды снова вызовет саб.