vba启动停止计时器?

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

我想在excel工作表中启动和停止两个计时器。这就是我所拥有的:

打开工作表时,将触发此模块:

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中,会触发sub
setformtimer

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不会处于“就绪模式”。遗憾的是,这没有帮助。我已经试过你的代码了。我仍然会犯同样的错误。无法停止计时器。遗憾的是,这没有帮助。我已经试过你的代码了。我仍然会犯同样的错误。无法停止计时器。