Workbook_Open与Auto_Open是一样的吗?
时间:2023-10-13 06:14:32
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事件的状态如何,都能确保用户打开工作簿时执行自定义代码。
注:在打开工作簿的同时按住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()
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
win10控制面板快捷键是什么?win10控制面板快捷键教程
![](https://img.aspxhome.com/file/2023/7/48377_0s.jpg)
wps表格怎么制作成绩通知单
pr2020如何改字体颜色?Premiere不更改字体只替换样式的技巧
![](https://img.aspxhome.com/file/2023/7/a328361_0s.jpg)
财务、销售必备的9个Excel小技巧
![](https://img.aspxhome.com/file/2023/0/a157010_0s.jpg)
一键关闭所有 Safari 标签页方法教程
![](https://img.aspxhome.com/file/2023/2/45202_0s.jpg)
win7看不到工作组其他电脑怎么解决?
![](https://img.aspxhome.com/file/2023/1/a278896_0s.jpg)
Mac新手使用技巧——如何在 macOS Monterey 中缩放显示器
![](https://img.aspxhome.com/file/2023/8/a204128_0s.jpeg)
电脑键盘 滚动锁定 scroll lock键的作用
![](https://img.aspxhome.com/file/2023/9/a342095_0s.png)
如何强制清理Mac OS X内存
![](https://img.aspxhome.com/file/2023/4/a216454_0s.jpg)
如何在Excel中取消首页的页眉页脚
![](https://img.aspxhome.com/file/2023/7/a156507_0s.jpg)
Win10更新五月版18362.113发布预览版推送(附更新修复内容汇总)
![](https://img.aspxhome.com/file/2023/28/a241292_0s.jpg)
Mac中如何通过Dictionary翻译单词
![](https://img.aspxhome.com/file/2023/9/a216489_0s.jpg)
华硕win10如何用u盘重装系统?华硕笔记本u盘重装win10系统步骤
![](https://img.aspxhome.com/file/2023/25/a218209_0s.png)
Win10怎么改dns?Win10修改DNS地址教程
![](https://img.aspxhome.com/file/2023/28/a247347_0s.jpg)
wps office怎么纵向?
![](https://img.aspxhome.com/file/2023/1/a168331_0s.jpg)
魔兽大脚插件哪些插件好用_魔兽大脚插件好用的插件推荐
![](https://img.aspxhome.com/file/2023/5/a315688_0s.jpg)
QQ消息记录怎么删除?
![](https://img.aspxhome.com/file/2023/9/a340803_0s.jpg)
Word表格设置首位自动添加序号的方法
比 Vlookup 好用10倍,它才是Excel函数中的NO.1
![](https://img.aspxhome.com/file/2023/7/a157157_0s.png)
让WPS演示实现幻灯片循环播放的小技巧
![](https://img.aspxhome.com/file/2023/3/a164603_0s.png)