VBA 停止 OnTime 函数

VBA Stop OnTime Function

有人可以帮我如何停止 OnTime 功能吗?它不像我尝试的那样有效。

Option Explicit

Dim iTimerSet As Double

Public Sub FXKurs_Wahl()
    iTimerSet = Now + TimeValue("00:05:00")
    Application.OnTime iTimerSet, "FXKurs_Wahl"
End Sub


Public Sub EndeUhr()        
    On Error Resume Next
    Application.OnTime iTimerSet, "FXKurs_Wahl", , False    
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)            
    Call EndeUhr    
End Sub

谢谢!

Application.OnTime method

的文档中所述

Set Schedule to False to clear a procedure previously set with the same Procedure and EarliestTime values.

语法是.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

所以如果你使用

Application.OnTime iTimerSet, "FXKurs_Wahl"

要启动它,您需要使用

Application.OnTime EarliestTime:=iTimerSet, Procedure:="FXKurs_Wahl", Schedule:=False

阻止它。请注意,两者的 iTimerSet 必须是相同的值。

确保如果您 运行 FXKurs_Wahl 多次,您将需要删除多个 OnTime 程序。还要确保没有其他代码操纵 iTimerSet 值。


如果 运行 FXKurs_Wahl 多次出现这种情况,请尝试在添加新的 OnTime

之前删除旧的
Public Sub FXKurs_Wahl()
    EndeUhr 'remove the old one before setting a new one
    iTimerSet = Now + TimeValue("00:05:00")
    Application.OnTime iTimerSet, "FXKurs_Wahl"
End Sub