在我使用 SetTimer (lib "user32") 設定計時器后,必須在結束腳本之前使用 KillTimer 將其殺死,否則會導致奇怪的行為,例如每次(幽靈)計時器觸發時都會關閉智能感知選單。
但是,有時在緊急情況下,我必須通過 VBE 的“重置”按鈕停止腳本,這會導致計時器保持未終止狀態,從而導致奇怪的行為。
當我按下“重置”按鈕時,有沒有辦法自動運行 KillTimer?

uj5u.com熱心網友回復:
計時器在應用程式中繼續運行,與任何單個 VB 專案分開。但事件腳本必須是 VB 專案的一部分。如果按下重置按鈕,我不認為它會觸發剛剛重置的專案中的事件腳本。
相反,您可以使用計時器的腳本來跟蹤專案會話并檢查會話是否已重置。
這是一個簡化的示例,使用Application.OnTime代替SetTimer:
Dim eventTime As Date
Sub StartTimer()
timer start:=True
End Sub
Sub timer(Optional start As Boolean = False)
If eventTime = 0 And Not start Then Exit Sub
Debug.Print Now
eventTime = Now TimeValue("00:00:02")
Application.OnTime eventTime, "Module1.Timer"
End Sub
該OnTime回圈繼續,即使你按RESET按鈕,但復位按鈕將清除值eventTime,以便在下一次計時器腳本運行,eventTime = 0是真實而OnTime退出回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/402305.html
標籤:
上一篇:excel變數表號等于列號參考
