excel - 如何停止 Application.ontime
问题描述
我试图在单击按钮 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
现在单击commandbutton1 1 分钟后,宏expire 正在运行(这是使commandbutton2 不可见)。但是当我在 1 分钟内再次按下命令按钮时(假设在第一次单击后 30 秒后),计时器继续运行并使命令按钮 2 在 30 秒内不可见。第二次点击时我需要计时器重置。或者请建议任何替代方法。希望我说清楚了。
解决方案
像这样的东西:
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