我需要每120秒运行一段代码.我正在寻找一种在VBA中执行此操作的简单方法.我知道有可能从Auto_Open事件中获取计时器值以防止必须使用幻数,但我无法完全了解如何触发计时器以获得每120秒运行一次的东西.
如果我可以避免它,我真的不想在睡眠中使用无限循环.
编辑:
基于提供的答案的交叉发布位于:Excel VBA Application.OnTime.我觉得使用这个想法是个坏主意......想法无论如何?
所以,我已经谷歌搜索了,似乎在制作自定义弹出菜单时,如果想要传递参数,那么这是可能的,但对我来说有两个主要问题:
1)您调用的函数将执行,但您将无法在其上激活断点,甚至无法使用Stop.
2)奇怪的是它似乎被召唤两次,这也不是很有帮助.
代码说明(请放入模块而不是表格中)
Option Explicit
Sub AssignIt()
Dim cbrCmdBar As CommandBar
Dim strCBarName As String
On Error Resume Next
strCBarName = "MyNewPopupMenu"
'Delete it first so multiple runs can occur without appending
Application.CommandBars(strCBarName).Delete
' Create a menu bar.
Set cbrCmdBar = Application.CommandBars.Add(Name:=strCBarName, Position:=msoBarMenuBar)
' Create a pop-up menu.
strCBarName = "MyNewPopupMenu"
Set cbrCmdBar = Application.CommandBars.Add(Name:=strCBarName, Position:=msoBarPopup)
'DEFINE COMMAND BAR CONTROL
With Application.CommandBars(strCBarName).Controls.Add(Type:=msoControlButton)
.Caption = "MyMenu"
.OnAction = BuildProcArgString("MyProc", "A", "B", "C") 'You can add any number of …Run Code Online (Sandbox Code Playgroud) 我有一些我支持的用户要求自动发生事情(更自动化,但这是另一点!).
一个人希望事件每120秒发生一次(参见我的另一个问题),另一个人希望在每个工作日的下午5点发生一件事.这必须在Excel工作表上,因此VBA作为插件等将是不,因为它需要自包含.
我非常不喜欢使用Application.OnTime 我认为它危险且不可靠,其他人怎么想?
编辑:交叉发布是VBA宏定时器样式,每隔设定的秒数运行代码,即120秒