猿问

VBA Macro On Timer样式每隔几秒钟运行代码,即120秒

VBA Macro On Timer样式每隔几秒钟运行代码,即120秒

我需要每120秒运行一段代码。我正在寻找一种在VBA中执行此操作的简单方法。我知道有可能从Auto_Open事件中获取计时器值以防止必须使用幻数,但我无法完全了解如何触发计时器以获得每120秒运行一次的东西。

如果我可以避免它,我真的不想在睡眠中使用无限循环。



青春有我
浏览 1730回答 3
3回答

开心每一天1111

首次打开工作簿时,执行以下代码:alertTime = Now + TimeValue("00:02:00")Application.OnTime alertTime, "EventMacro"然后在工作簿中有一个名为“EventMacro”的宏将重复它。Public Sub EventMacro()     '... Execute your actions here'     alertTime = Now + TimeValue("00:02:00")     Application.OnTime alertTime, "EventMacro"End Sub

长风秋雁

是的,你可以使用Application.OnTime它,然后把它放在循环中。它有点像闹钟,你可以在你希望它再次响铃的时候保持按下按钮。以下内容每三秒更新一次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(现在它只是更新A1中的时间ActiveSheet.Cells(1, 1).Value = Time)。注意:您需要StartTimer模块中的代码(除此之外),而不是工作表模块。如果您在工作表模块中有它,代码需要稍作修改。

慕桂英4014372

在工作簿事件中:Private Sub Workbook_Open()     RunEveryTwoMinutesEnd Sub在一个模块中:Sub RunEveryTwoMinutes()     //Add code here for whatever you want to happen     Application.OnTime Now + TimeValue("00:02:00"), "RunEveryTwoMinutes"End Sub如果您只希望在工作簿打开后执行第一段代码,则只需在Workbook_Open事件中添加2分钟的延迟
随时随地看视频慕课网APP
我要回答