本文作者:office教程网

Workbook_Open与Auto_Open是一样的吗?

office教程网 2023-08-10 07:32:04
后台-系统设置-扩展变量-手机广告位-内容正文顶部
摘要: Workbook_Open和Auto_Open都能实现在打开工作簿时自动运行自定义代码的功能。Workbook_Open似乎要取代Auto_Open,而Auto_Open的存在似乎只是为了兼容以前的程序。然而,对于Excel...

Workbook_Open和Auto_Open都能实现在打开工作簿时自动运行自定义代码的功能。Workbook_Open似乎要取代Auto_Open,而Auto_Open的存在似乎只是为了兼容以前的程序。然而,对于Excel开发人员来说,Auto_Open仍然很有用。

对于初学者来说,细致地了解Workbook_Open和Auto_Open,解开对这两个过程的一些疑惑,有助于更好地学习或阅读相关代码,也能够更好地在自已编写的代码中合理使用它们。

Workbook_Open和Auto_Open放置的位置不同

Workbook_Open必须位于ThisWorkbook模块中,而Auto_Open必须放置在标准模块中,如下图所示。

在ThisWorkbook模块中,可以直接在VBE编辑器上方左边的下拉框中选择Workbook,代码框架会自动生成。

在标准模块中,必须手动输入Sub Auto_Open()。

Application.EnableEvents事件的影响

Workbook_Open受Application.EnableEvents事件的影响,而Auto_Open不会。也就是说,当Application.EnableEvents事件设置为False后,Excel不会触发Workbook_Open。因此,如果你担心因Application.EnableEvents事件设置而影响打开工作簿时自动运行自定义的代码,那么可以使用Auto_Open,这样不管Application.EnableEvents事件的状态如何,都能确保用户打开工作簿时执行自定义代码。

如何实现打开工作簿就自动运行VBA代码?

如下图所示的工作表,我希望在打开该工作簿时,用户能看到一条关于该工作簿用途的提示消息,如何编写VBA代码? 答:有两种实现方法。 第一种,使用Workbook_Open事件。代码如下: Private Sub Workbook_Open() MsgBox '本工作簿用于记录个人私密信息,外人请勿观看!'

注:在打开工作簿的同时按住SHIFT键,会禁用Workbook_Open()和Auto_Open()。

使用代码自动打开工作簿时的影响

如果使用代码自动打开含有Workbook_Open或Auto_Open的工作簿,那么将不会触发Auto_Open代码但会触发Workbook_Open代码。因此,Auto_Open适合于由用户自已打开的工作簿,而不适用于由编写的代码自动打开的工作簿。也就是说,如果您仅想让用户自已打开时执行自定义的代码,那么使用Auto_Open。

如果想要在自动打开工作簿时禁用Workbook_Open,那么可以在打开该工作簿前设置Application.EnableEvents事件为False。

如果想要在自动打开工作簿时运行Auto_Open,那么可以使用Workbook.RunAutoMacros方法。

Workbook_Open和Auto_Open同时存在时的调用顺序

如果某工作簿中同时存在Workbook_Open和Auto_Open,那么将首先调用Workbook_Open。在Workbook_Open和Auto_Open调用完后,再执行customUI_OnLoad()回调程序。即,工作簿打开时的调用顺序:

Workbook_Open

Auto_Open

customUI_OnLoad()

如何找到工作表中满足条件的所有记录并逐条显示?

Q:工作表中有很多同名人员的信息,想要在用户窗体中设置查询,输入人员姓名后,显示其有多少条信息,并且可以逐条显示这些信息。 A:下面是详细的实现过程。 在VBE中插入“用户窗体”并命名为UInfo,在窗体中放置“标签”、“文本框”和“按钮”控件,并分别给这些控件命名,如下图所示。 在用户窗体模块中输入下列

后台-系统设置-扩展变量-手机广告位-内容正文底部
未经允许不得转载:

作者:office教程网,原文地址:Workbook_Open与Auto_Open是一样的吗?发布于2023-08-10 07:32:04
转载或复制请以超链接形式并注明出处 演示站

分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

留言与评论(共有 0 条评论)
   
验证码: