如何使用Excel 2016 VBA宏编辑器创建自动计时器?

如何使用Excel 2016 VBA宏编辑器创建自动计时器?,vba,excel,timer,Vba,Excel,Timer,我需要在Excel 2016 VBA编辑器中创建一个计时器,它将每秒关闭并显示一条消息 我有一个简单的代码可以做到这一点;但是,当我运行代码时,会出现一个消息框,然后出现一个错误。我的代码如下: Private Sub Workbook_Open() RunEveryTwoMinutes End Sub Sub RunEveryTwoMinutes() MsgBox ("Stop!") Application.OnTime Now + TimeValue("00:00:01"), "RunEv

我需要在Excel 2016 VBA编辑器中创建一个计时器,它将每秒关闭并显示一条消息

我有一个简单的代码可以做到这一点;但是,当我运行代码时,会出现一个消息框,然后出现一个错误。我的代码如下:

Private Sub Workbook_Open()
RunEveryTwoMinutes
End Sub

Sub RunEveryTwoMinutes()
MsgBox ("Stop!")
Application.OnTime Now + TimeValue("00:00:01"), "RunEveryTwoMinutes"
End Sub
我收到的错误状态为: 无法运行宏“C:user | generic\Book1.xlsm”。该宏可能在此工作簿中不可用,或者可能已禁用所有宏


我不确定发生了什么。我只需要找到一种方法来创建一个1秒计时器,在代码初始化后立即启动。

将此代码放入工作簿代码模块:

Private Sub Workbook_Open()
RunEveryTwoMinutes
End Sub
Sub RunEveryTwoMinutes()
MsgBox ("Stop!")
Application.OnTime Now + TimeValue("00:00:01"), "RunEveryTwoMinutes"
End Sub
并将此代码放置在标准代码模块中:

Private Sub Workbook_Open()
RunEveryTwoMinutes
End Sub
Sub RunEveryTwoMinutes()
MsgBox ("Stop!")
Application.OnTime Now + TimeValue("00:00:01"), "RunEveryTwoMinutes"
End Sub

或者,您可以在工作簿代码模块中包含所有代码,但需要限定宏名称:

Private Sub Workbook_Open()
RunEveryTwoMinutes
End Sub

Sub RunEveryTwoMinutes()
MsgBox ("Stop!")
Application.OnTime Now + TimeValue("00:00:01"), "ThisWorkbook.RunEveryTwoMinutes"
End Sub

我认为第一种方法更可取。

答案不错,但为什么您更喜欢将函数放在标准模块中?@a.S.H-我认为,如果ThisWorkbook模块中的函数只针对工作簿,表单中的函数只针对表单,而工作表中的函数只针对ic到工作表,类中的函数特定于该类,其他所有内容都放在通用模块中。这是一个很好的观点。标准模块也更易于导出,因此易于重用。Kudos:)