Fin*_*per 38 excel vba scheduling timer excel-vba
我需要每120秒运行一段代码.我正在寻找一种在VBA中执行此操作的简单方法.我知道有可能从Auto_Open事件中获取计时器值以防止必须使用幻数,但我无法完全了解如何触发计时器以获得每120秒运行一次的东西.
如果我可以避免它,我真的不想在睡眠中使用无限循环.
编辑:
基于提供的答案的交叉发布位于:Excel VBA Application.OnTime.我觉得使用这个想法是个坏主意......想法无论如何?
Ala*_*ain 60
首次打开工作簿时,执行以下代码:
alertTime = Now + TimeValue("00:02:00")
Application.OnTime alertTime, "EventMacro"
Run Code Online (Sandbox Code Playgroud)
然后在工作簿中有一个名为"EventMacro"的宏将重复它.
Public Sub EventMacro()
'... Execute your actions here'
alertTime = Now + TimeValue("00:02:00")
Application.OnTime alertTime, "EventMacro"
End Sub
Run Code Online (Sandbox Code Playgroud)
Tod*_*ain 22
是的,你可以使用Application.OnTime它,然后把它放在循环中.它有点像闹钟,你可以在你希望它再次响铃的时候保持按下按钮.以下内容每三秒更新一次Cell A1.
Dim TimerActive As Boolean
Sub StartTimer()
Start_Timer
End Sub
Private Sub Start_Timer()
TimerActive = True
Application.OnTime Now() + TimeValue("00:00:03"), "Timer"
End Sub
Private Sub Stop_Timer()
TimerActive = False
End Sub
Private Sub Timer()
If TimerActive Then
ActiveSheet.Cells(1, 1).Value = Time
Application.OnTime Now() + TimeValue("00:00:03"), "Timer"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
您可以将该StartTimer过程放入Auto_Open事件中并更改在该过程中完成的操作Timer(现在它只是更新A1中的时间ActiveSheet.Cells(1, 1).Value = Time).
注意:您需要StartTimer模块中的代码(除此之外),而不是工作表模块.如果您在工作表模块中有它,代码需要稍作修改.
在工作簿事件中:
Private Sub Workbook_Open()
RunEveryTwoMinutes
End Sub
Run Code Online (Sandbox Code Playgroud)
在一个模块中:
Sub RunEveryTwoMinutes()
//Add code here for whatever you want to happen
Application.OnTime Now + TimeValue("00:02:00"), "RunEveryTwoMinutes"
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您只希望在工作簿打开后执行第一段代码,则只需在Workbook_Open事件中添加2分钟的延迟
| 归档时间: |
|
| 查看次数: |
242154 次 |
| 最近记录: |