【问题标题】:How do you create an automatic timer using Excel 2016 VBA macro editor?如何使用 Excel 2016 VBA 宏编辑器创建自动计时器?
【发布时间】:2017-02-28 19:27:49
【问题描述】:

我需要在 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'。此工作簿中可能没有该宏,或者所有宏都可能被禁用。

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

【问题讨论】:

    标签: vba excel timer


    【解决方案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"), "ThisWorkbook.RunEveryTwoMinutes"
    End Sub
    

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

    【讨论】:

    • 不错的答案,但为什么您更喜欢将函数放在标准模块中?
    • @A.S.H - 如果 ThisWorkbook 模块中的函数仅特定于工作簿,而表单中的函数仅特定于表单,并且工作表中的函数只是特定于工作表,类中的函数特定于类,其他所有内容都放入通用模块中。
    • 这很好。标准模块也更容易导出,因此可以重用。荣誉:)
    猜你喜欢
    • 2016-06-14
    • 2023-03-27
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多