Excel工作簿打开时自动运行VBA代码

3
当Excel工作簿打开时,我希望运行VBA代码。我尝试在代码应该运行的表单中创建一个公共过程:
Public Sub Workbook_Open 
    ' Some code here
End Sub

工作簿打开时它不会运行。

它应该在一个单元格中创建一个下拉框,然后从数据库中填充信息。

3个回答

5

请确保代码位于VBA编辑器的ThisWorkbook范围内,而不是在模块或工作表中:

Option Explicit

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

请确保你的宏已启用

详情请参阅微软文档:打开工作簿时自动运行宏


嗨,我的宏已启用并添加了Option Explicit行,尽管将声明从Public更改为Private不起作用,因为现在运行程序时,WorkBook_Open过程不会显示在窗口中。 - Bonang
你把代码放在哪里了?是放在 ThisWorkbook 中还是模块中?使用像上面那样的 MsgBox 进行测试。如果启用宏,这个 必须 能够工作。 - Pᴇʜ
嗨,在这个工作簿中,让我尝试将其放入VBA编辑器中。 - Bonang
@Bonang 不,它必须ThisWorkbook中才能正常工作。请查看我在答案中提供的Microsoft文档链接,按照步骤操作。 - Pᴇʜ
1
@Bonang 只是出于我的兴趣:问题出在哪里? - Pᴇʜ

1

除了 @Pᴇʜ 的回答,您还可以在标准模块中使用以下过程:

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

1
你不应该使用Auto_Open事件,因为这只是为了向后兼容,并且在未来的版本中可能会被删除。 - Pᴇʜ
@Pᴇʜ 我并不坚持 - 我只是提供了一个替代方案。 - JohnyL
当然,提出替代方案并没有错。我只是想提一下,如果你使用它,你就是在赌一个老旧的东西。 - Pᴇʜ
1
@Pᴇʜ 是的... 但是这匹马已经超过20年了,而且仍在继续工作。就像我们说的,“老马不会伤害犁沟” - JohnyL

0

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

Private Sub Workbook_Open()

End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接