我有源VBA,问题是我如何阻止Ontime in if else。
Sub ok2()
Application.OnTime Now + TimeValue("00:00:01"), "test", Schedule:=True
End Sub
Sub ok3()
Application.OnTime Now + TimeValue("00:00:01"), "test", Schedule:=False
End Sub
Sub test()
If i < 50 Then
UserForm2.Label1.Width = i * 2
i = i + 1
ok2
Else
ok3
End If
End Sub
答案 0 :(得分:1)
要取消OnTime,您还需要在设置时提供计划的确切时间。
请考虑以下内容供您参考
Option Explicit
Private SetTimer As Date
Sub ok2()
Application.OnTime SetTimer, "test", Schedule:=True
End Sub
Sub ok3()
Application.OnTime SetTimer, "test", Schedule:=False
End Sub
Sub testTimer()
If MsgBox("test", vbYesNo) = vbYes Then
SetTimer = Now + TimeValue("00:00:10")
ok2
Else
ok3
End If
End Sub
sub test
msgbox Now
end sub
您无法使用
停止运行时间Application.OnTime Now + TimeValue("00:00:01"), "test", Schedule:=False
您需要提供计划在EarliestTime参数中运行的确切时间。
E.g。当Now
为17:00:00且您运行ok2
时,
这意味着test
将在17:00:01运行,因为那时Now + TimeValue("00:00:01")
将是17:00:01。
因此,要停止它,您必须运行以下代码
Application.OnTime TimeValue("17:00:01"), "test", Schedule:=False
注意语句中没有Now
,即必须提供计划的完全时间。