vba启动停止计时器?
我想在excel工作表中启动和停止两个计时器。这就是我所拥有的: 打开工作表时,将触发此模块:vba启动停止计时器?,vba,excel,Vba,Excel,我想在excel工作表中启动和停止两个计时器。这就是我所拥有的: 打开工作表时,将触发此模块: Sub SetOpenTimer() OpenTimer = Now + TimeValue("00:00:10") Application.OnTime OpenTimer, "StartTimerShutdownForm" End Sub Sub StartTimerShutdownForm() UserForm1.Show End Sub Sub setFormTimer() Fo
Sub SetOpenTimer()
OpenTimer = Now + TimeValue("00:00:10")
Application.OnTime OpenTimer, "StartTimerShutdownForm"
End Sub
Sub StartTimerShutdownForm()
UserForm1.Show
End Sub
Sub setFormTimer()
FormTimer = Now + TimeValue("00:00:10")
Application.OnTime FormTimer, "Shutdown"
End Sub
10秒后(在本例中),子startimershutdownform
被触发:
Sub SetOpenTimer()
OpenTimer = Now + TimeValue("00:00:10")
Application.OnTime OpenTimer, "StartTimerShutdownForm"
End Sub
Sub StartTimerShutdownForm()
UserForm1.Show
End Sub
Sub setFormTimer()
FormTimer = Now + TimeValue("00:00:10")
Application.OnTime FormTimer, "Shutdown"
End Sub
这将显示显示消息的用户窗体。在Userform的initialize sub中,会触发subsetformtimer
:
Sub SetOpenTimer()
OpenTimer = Now + TimeValue("00:00:10")
Application.OnTime OpenTimer, "StartTimerShutdownForm"
End Sub
Sub StartTimerShutdownForm()
UserForm1.Show
End Sub
Sub setFormTimer()
FormTimer = Now + TimeValue("00:00:10")
Application.OnTime FormTimer, "Shutdown"
End Sub
如果setformtimer
中的此计时器结束,则会触发sub关机
此子项关闭工作簿,但在Userform中有一个按钮供用户取消setformtimer
:
Sub stopFormTimer()
Application.OnTime EarliestTime:=FormTimer, _
Procedure:="setOpenTimer", Schedule:=False
End Sub
这可能会停止setformtimer
,但它不起作用。
当此计时器停止时,它会重新启动打开文档时触发的计时器,因此所有计时器都会重新启动,但停止计时器代码不起作用
在stopFormTimer
、setFormTimer
和StartTimerShutdownForm
所在模块的顶部,我声明了这些
Dim OpenTimer As Date
Dim FormTimer As Date
我错过了什么?为什么我不能停止计时器并重新启动第一个计时器?我认为问题在于两个子系统中的进程名称不同。他们必须匹配。我会尝试:
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
我认为问题在于两个sub中的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
这可能是因为Excel未处于
就绪模式
,因为表单已显示?有关详细信息,请参见Application.OnTime,latestime参数
。不了解就绪模式。基于此,我将如何解决我的问题?我找不到任何关于“就绪模式”的东西来解释我是如何将其设置为就绪的。。。似乎其他人可以让计时器停止。。不知道为什么我的excel不会处于“就绪模式”。这可能是因为excel没有处于就绪模式
,因为表单已显示?有关详细信息,请参见Application.OnTime,latestime参数
。不了解就绪模式。基于此,我将如何解决我的问题?我找不到任何关于“就绪模式”的东西来解释我是如何将其设置为就绪的。。。似乎其他人可以让计时器停止。。不知道为什么我的excel不会处于“就绪模式”。遗憾的是,这没有帮助。我已经试过你的代码了。我仍然会犯同样的错误。无法停止计时器。遗憾的是,这没有帮助。我已经试过你的代码了。我仍然会犯同样的错误。无法停止计时器。