OnTime函数混淆
我已经写下VBA代码以下5秒后执行,但它不起作用。
Option Explicit Public RunWhen As Double Public Const cRunIntervalSeconds = 5 ' two minutes Public Const cRunWhat = "TheSub" ' the name of the procedure to run Sub StartTimer() RunWhen = Now + TimeValue(0, 0, cRunIntervalSeconds) Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _ Schedule:=True End Sub Sub TheSub() '''''''''''''''''''''''' ' Your code here '''''''''''''''''''''''' MsgBox "hi this is working" StartTimer ' Reschedule the procedure End Sub
我在这里错过了什么?
像下面这样简单的expression式也不起作用
Sub test() Application.ontime (now() + TimeValue("0:0:5")),"test" End Sub
您应该使用TimeSerial函数,而不是TimeValue 。
Option Explicit Public RunWhen As Double Public Const cRunIntervalSeconds = 5 ' two minutes Public Const cRunWhat = "TheSub" ' the name of the procedure to run Sub StartTimer() RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds) Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat End Sub Sub TheSub() '''''''''''''''''''''''' ' Your code here '''''''''''''''''''''''' Debug.Print "hi this is working" StartTimer ' Reschedule the procedure End Sub
这工作,你可以看VBE的即时窗口看到它通过。