我有一个application.ontime例程如下。为什么我的application.ontime不能在if语句中工作? VBA
Sub timer()
If Hour(Time) <= 15 Or Hour(Time) >= 22 Then
On Error Resume Next
Application.OnTime EarliestTime:=ThisWorkbook.Worksheets("Sheet1").Range("K5"), Procedure:="dataextract", Schedule:=False
On Error GoTo 0
ThisWorkbook.Worksheets("Sheet1").Range("K5") = Now + TimeSerial(0, WorksheetFunction.Floor(Minute(Now), 5) + 5 - Minute(Now), 1 - Second(Now))
Application.OnTime EarliestTime:=ThisWorkbook.Worksheets("Sheet1").Range("K5"), Procedure:="dataextract", Schedule:=True
End If
End Sub
我想这个程序至10点之间上day 0
上day 1
运行到下午4点,然后自行重新启动晚上10点day 1
到下午4点day 2
,等等。代码在下午4点停止,但不会在晚上10点重新启动。正如你所看到的,我永远不会转身schedule:=false
,所以我不明白为什么它不会重新启动..?
'Timer'已经有一个内置的VBA意义。也许改名字。我怀疑这是问题,但可能是这样。 –
你拍摄的时间间隔是多少?不确定我在这里按照你使用TimeSerial的方式。那么'timer'如何被调用?这里没有任何东西可以在代码停止后重启代码。即如果在下午3点之后和晚上10点之前调用“计时器”,则不采取行动并且不计划其他运行。 –
我每5分钟致电一次。发言权功能将第一轮运行转到下一个5分钟的时间间隔。例如,我在晚上9点43分开始申请,晚上9点45分。我还检查以确保只有1个application.ontime运行实例。 – A1122