如何停止Application.ontime

时间:2019-08-22 20:02:32

标签: excel vba

单击按钮1分钟后,我尝试运行宏。什么时候  我再次按下该按钮,则首次计时器应重置并从头开始(如果我在1分钟内再次单击该按钮,宏将不会运行。它应仅在最近一次单击后1分钟内运行)

我尝试了application.ontime dtime,"expire", false,但是它不起作用。当我尝试application.ontime dtime,"expire", , false(导致错误1004)

public dtime as double

private sub commandbutton1_click()
application.ontime dtime,"expire", false
dtime = Now+timevalue("00:01:00")
application.ontime dtime,"expire"
commandbutton2.visible= true

end sub

现在,单击命令按钮1分钟后,宏过期正在运行(这将使命令按钮2不可见)。但是,当我在1分钟内再次按下命令按钮时(例如,第一次单击后30秒后),计时器保持运行,并在30秒内使命令按钮2不可见。我需要在第二次点击时重置计时器。或请提出任何建议 替代方法。希望我说清楚。

1 个答案:

答案 0 :(得分:2)

类似这样的东西:

public dtime as double

private sub commandbutton1.click()
    'If there's an existing run, cancel it
    If dtime <> 0 then 
        on error resume next 'might already have run, so ignore any error
        application.ontime dtime, "expire", ,false
        on error goto 0      'stop ignoring errors
        dtime=0
    End If

    'schedule next run
    dtime = Now + timevalue("00:01:00")
    application.ontime dtime, "expire"
    commandbutton2.visible = true

end sub