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 ,但它不起作用。 当这个定时器停止时,它假定重新启动文档被打开时触发的定时器,所有的都重新启动,但停止定时器代码不起作用。

stopFormTimersetFormTimerStartTimerShutdownForm所在的模块中,在顶部我声明了这些

 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