【问题标题】:Automatically Run VBA Code when an Excel Workbook OpensExcel 工作簿打开时自动运行 VBA 代码
【发布时间】:2019-10-16 16:16:46
【问题描述】:

我想在打开 Excel 工作簿时运行 VBA 代码。

我尝试在代码应该在其中运行的工作表中创建一个公共过程:

Public Sub Workbook_Open 
    ' Some code here
End Sub

工作簿打开时不运行。

应该在其中一个单元格中创建一个组合框,然后用数据库中的信息填充它。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    确保代码在 VBA 编辑器的 ThisWorkbook 范围内,并且不在在模块或工作表中:

    Option Explicit
    
    Private Sub Workbook_Open()
        MsgBox "Autorun works!"
        'your code here
    End Sub
    

    并确保您的macros are enabled

    有关详细信息,另请参阅 Microsoft 的文档:Automatically run a macro when opening a workbook

    【讨论】:

    • 嗨,我的宏已启用,并且添加了 Option Explicit 行,虽然将声明从 Public 更改为 Private 不起作用,因为现在当我运行程序时 WorkBook_Open 过程没有显示在窗口
    • 你把代码放在哪里了?在ThisWorkbook 或模块中?使用上面显示的 MsgBox 对其进行测试。如果启用了宏,这必须工作。
    • 您好,在这本工作簿中,让我尝试将其放入 VBA 编辑器中
    • @Bonang 不,它必须ThisWorkbook 中才能正常工作。请参阅我在回答中提供的 Microsoft 文档链接。一步一步来。
    • @Bonang 只是为了我的兴趣:问题是什么?
    【解决方案2】:

    除了@Pᴇʜ's answer,您还可以在标准模块中使用以下过程:

    Sub Auto_Open()
        '// Your code here...
    End Sub
    

    【讨论】:

    • 您不应该使用Auto_Open 事件,因为这只是为了向后兼容,并且可能会在未来的版本中被删除。
    • @Pᴇʜ 我不坚持——我只是提供了一个替代方案?
    • 当然,建议替代方案没有错。我只是觉得值得一提的是,如果你使用它,你就赌了一匹老马。
    • @Pᴇʜ 是啊...不过这匹马已经20多年了,还在继续工作。俗话说“老马不伤沟”?
    【解决方案3】:

    您正在尝试创建一个在您打开一本书时激活的事件过程。在 VBA 编辑器中转到 thisworkbook 并从编码窗口上方的下拉列表中选择工作簿打开过程,或者您可以手动输入:

    Private Sub Workbook_Open()
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多