青春有我
2019-08-08 16:35:16
VBA Macro On Timer樣式每隔幾秒鐘運(yùn)行代碼,即120秒我需要每120秒運(yùn)行一段代碼。我正在尋找一種在VBA中執(zhí)行此操作的簡單方法。我知道有可能從Auto_Open事件中獲取計(jì)時(shí)器值以防止必須使用幻數(shù),但我無法完全了解如何觸發(fā)計(jì)時(shí)器以獲得每120秒運(yùn)行一次的東西。如果我可以避免它,我真的不想在睡眠中使用無限循環(huán)。
3 回答

開心每一天1111
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
首次打開工作簿時(shí),執(zhí)行以下代碼:
alertTime = Now + TimeValue("00:02:00")Application.OnTime alertTime, "EventMacro"
然后在工作簿中有一個(gè)名為“EventMacro”的宏將重復(fù)它。
Public Sub EventMacro() '... Execute your actions here' alertTime = Now + TimeValue("00:02:00") Application.OnTime alertTime, "EventMacro"End Sub

長風(fēng)秋雁
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
是的,你可以使用Application.OnTime
它,然后把它放在循環(huán)中。它有點(diǎn)像鬧鐘,你可以在你希望它再次響鈴的時(shí)候保持按下按鈕。以下內(nèi)容每三秒更新一次Cell A1。
Dim TimerActive As BooleanSub StartTimer() Start_TimerEnd SubPrivate Sub Start_Timer() TimerActive = True Application.OnTime Now() + TimeValue("00:00:03"), "Timer"End SubPrivate Sub Stop_Timer() TimerActive = FalseEnd SubPrivate Sub Timer() If TimerActive Then ActiveSheet.Cells(1, 1).Value = Time Application.OnTime Now() + TimeValue("00:00:03"), "Timer" End IfEnd Sub
您可以將該StartTimer
過程放入Auto_Open
事件中并更改在該過程中完成的操作Timer
(現(xiàn)在它只是更新A1中的時(shí)間ActiveSheet.Cells(1, 1).Value = Time
)。
注意:您需要StartTimer
模塊中的代碼(除此之外),而不是工作表模塊。如果您在工作表模塊中有它,代碼需要稍作修改。

慕桂英4014372
TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
在工作簿事件中:
Private Sub Workbook_Open() RunEveryTwoMinutesEnd Sub
在一個(gè)模塊中:
Sub RunEveryTwoMinutes() //Add code here for whatever you want to happen Application.OnTime Now + TimeValue("00:02:00"), "RunEveryTwoMinutes"End Sub
如果您只希望在工作簿打開后執(zhí)行第一段代碼,則只需在Workbook_Open
事件中添加2分鐘的延遲
添加回答
舉報(bào)
0/150
提交
取消