打开APP
userphoto
未登录

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

开通VIP
Auto_Open过程与Workbook_Open事件过程的区别及运行顺序!!!
Auto_Open过程与Workbook_Open事件过程的区别
Q:Auto_Open子过程与Workbook_Open事件过程有什么区别?
A:在Excel的“标准模块”中可以创建4种自动运行的宏,它们分别是Auto_Open(打开工作 簿时自动运行), Auto_Close, Auto_Activate,  Auto_Deactivate。这些自动运行的宏是为了与Excel 5 和 95兼容而保留下来的。现在可以使用工作簿的 Open, Close, Activate , Deactivate 事件来代替它们
当一个工作簿中分别有Workbook_Open事件和Auto_Open子过程时,当打开工作簿时,Workbook_Open事件先运行,然后再运行 Auto_Open子过程。但是并不是所有情况都会运行Auto_Open子过程,如果在其它工作簿中用代码打开该工作簿的话(比如用 Workbooks.Open方法打开该工作簿),则只会运行Workbook_Open事件,而不会运行Auto_Open子过程。为了加深理解,可以 参考如下代码:
新建一个工作簿:
在“Thisworkbook”模块中粘帖如下代码
  • Private Sub Workbook_Open()
  •     MsgBox 1
  • End Sub
复制公式 或代码插入一个模块
在“模块1”中粘帖如下代码
  • Sub auto_open()
  •     MsgBox 2
  • End Sub
复制公式 或代码保存关闭该工作簿,然后再打开该工作簿。
查看运行的结果,可以发现先弹出1,再弹出2

如果两个都存在,有限执行Workbook_Open,然后执行Auto_Open
说起它们两的区别,我想一定要说vba的发展史,auto_open先出现,是vb影响的结果,而Workbook_Open更具有本土风格。为了前后兼容,所以两者都可以用了。

运行的顺序:是workbook_open事件先于auto_open过程

workbook_open是必须写在thisworkbook里的,open事件吧。aotoopen呢,是放在模块里呢,还是thisworkbook里呢?如果有一个早八点自动运行的代码,那是不是得在之前打开工作簿,然后,放在thisworkbook的里面就可以到时间自动运行呢

原来认为执行完了Private Sub Workbook_Open()事件后就会执行模块中的Sub Auto_Open()程序,可是当在

Private Sub Workbook_Open()事件中打开一个窗体,后怎么就不执行Sub Auto_Open()了?


插入一个模块,把Sub Auto_Open()放在模块里试试。


在Open事件中调用窗体时,控制权转交给窗体,此时Open事件并没有结束,只有当窗体关闭后才会执行下面过程的End Sub,而此后将不会激活Auto_Open,解决方法是改用UserForm1.Show 0调用窗体。

Private Sub Workbook_Open()
MsgBox "Workbook_Open"
UserForm1.Show
End Sub

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何自动运行EXCEL中的VBA?
问与答3:Workbook_Open与Auto_Open是一样的吗?
让Excel工作簿中宏自动运行的两种方法
VBA代码窗口、模块的简单讲解及ThisWorkbook工作簿代码应用
学习VBA,报表做到飞 第五章 事件篇 5.2 Workbook_Open事件
怎样在打开Excel工作簿时禁止Auto
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服