2017-01-09 380 views
1

我想在我的Excel工作表中啓動和停止兩個計時器。這是我有:vba啓動停止計時器?

當工作表被打開時,該模塊被觸發:

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結束,子shutdown是triggerd 本次關閉工作,但在用戶窗體有用戶按鈕取消setformtimer

Sub stopFormTimer() 

Application.OnTime EarliestTime:=FormTimer, _ 
Procedure:="setOpenTimer", Schedule:=False 

End Sub 

此假設停止setformtimer,但它不工作。 當這個定時器停止時,它假定重新啓動當文檔被打開時觸發的定時器,所以它重新啓動,但停止定時器代碼不起作用。

stopFormTimersetFormTimerStartTimerShutdownForm所在的模塊,在上面我宣佈這些

Dim OpenTimer As Date 
Dim FormTimer As Date 

缺少什麼我在這裏?爲什麼我不能停止定時器並重新啓動第一個定時器?

+0

這可能是因爲Excel不在'Ready-Mode'中,因爲Form被顯示? 'Application.OnTime,LatestTime參數'中的更多信息。 – dee

+0

不理解就緒模式。基於此,我將如何解決我的問題?我無法找到任何關於「準備模式」的內容,解釋瞭如何將其設置爲準備就緒...似乎其他可以使定時器停止..不知道爲什麼我的Excel不會處於「就緒模式」。 – Behedwin

回答

0

我認爲問題是你在兩個子目錄中有不同的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 
+0

可悲的是,這並沒有幫助。我試過你的代碼。我仍然得到同樣的錯誤。無法停止計時器。 – Behedwin

+0

錯誤信息實際上說的是什麼? –