打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
问与答3:Workbook_Open与Auto_Open是一样的吗?
userphoto

2017.04.16

关注

 

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

 

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

 

Workbook_Open和Auto_Open放置的位置不同

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


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


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

 

Application.EnableEvents事件的影响

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

 

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

 

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

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

 

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

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

 

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

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

  • Workbook_Open

  • Auto_Open

  • customUI_OnLoad()

 

 

--------------------------------------

 

如果您对本文介绍的内容有什么建议或好的示例,欢迎发送邮件给我:xhdsxfjy@163.com

本文属原创文章,转载请联系我或者注明出处。

 

关注《完美Excel》微信公众账号:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
学习VBA,报表做到飞 第五章 事件篇 5.5 Workbook_BeforePrint事件
VBA常用代码解析(第十讲)
Auto_Open过程与Workbook_Open事件过程的区别及运行顺序!!!
vba事件程序
怎样在打开Excel工作簿时禁止Auto
python – 脚本更改到多个Excel工作簿
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服