vba启动停止计时器?
我想在我的Excel工作表中启动和停止两个计时器。 这是我有:
当工作表被打开时,这个模块被触发:
Sub SetOpenTimer() OpenTimer = Now + TimeValue("00:00:10") Application.OnTime OpenTimer, "StartTimerShutdownForm" End Sub
10秒钟之后(在这个例子中),触发子启动/ startimershutdownform
:
Sub StartTimerShutdownForm() UserForm1.Show End Sub
这将显示一个消息显示的用户窗体。 在用户窗体中的初始化子工具中,触发一个子集合setformtimer
:
Sub setFormTimer() FormTimer = Now + TimeValue("00:00:10") Application.OnTime FormTimer, "Shutdown" End Sub
如果setformtimer
这个计时器结束,则触发子closures,这个子closures工作簿,但是在Userform中有一个用于取消setformtimer
的button:
Sub stopFormTimer() Application.OnTime EarliestTime:=FormTimer, _ Procedure:="setOpenTimer", Schedule:=False End Sub
这假设停止setformtimer
,但它不起作用。 当这个定时器停止时,它假定重新启动文档被打开时触发的定时器,所有的都重新启动,但停止定时器代码不起作用。
在stopFormTimer
, setFormTimer
和StartTimerShutdownForm
所在的模块中,在顶部我声明了这些
Dim OpenTimer As Date Dim FormTimer As Date
我在这里错过了什么? 为什么不能停止计时器并重新启动第一个计时器?
我认为问题是你在两个子目录中有不同的proc名字。 他们必须匹配。 我会尝试:
Sub setFormTimer() FormTimer = Now + TimeValue("00:00:10") Application.OnTime EarliestTime:=FormTimer, Procedure:="Shutdown", Schedule:=True End Sub Sub stopFormTimer() Application.OnTime EarliestTime:=FormTimer, Procedure:="Shutdown", Schedule:=False End Sub