如何调试此VBA / Excel代码?

时间:2016-04-03 10:01:41

标签: excel vba excel-vba

我有源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

1 个答案:

答案 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,即必须提供计划的完全时间。