【VBA研究】VBA代码的存放位置

 

作者:iamlaosong

 

 学习VBA一般都从录制宏开始,宏代码存放在模块中,第一次录制的时候,系统会自动插入一个模块。我在编写自己的宏时,开始代码只会放在模块中,后来,我才了解到代码还有很多地方可以保存。

打开代码编辑器后,我们可以看到VBAproject下面有很多对象,除了固有的工作表对象(sheet1,sheet2...,还有一个thisworkbook)外,还可以有插入模块、窗口、按钮等,这些对象都可以存放代码。固有的工作表对象,有很多事件,可以对这些事件进行编程,如thisworkbook的Workbook_Open()事件就是打开工作表时触发,如在其中插入代码,便可在打开工作表时执行。

代码存储在不同的位置,实际效果是不同的,以前我在网上找了一个建菜单的代码,放在Workbook_Open()执行没反应,但是在模块中建立一个过程,然后在Workbook_Open()中调用就可以,可见执行效果是不一样的。之所以发生这样的事,是因为每个存放位置都有一些默认的东西,这些默认的东西不同,造成不同的执行效果。还是上面的例子,建立菜单时有这么一条语句:

Set NewMenu = CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True)

放在模块的过程中相当于Set NewMenu = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True)可以取得正确的效果,而放在Workbook_Open()中则相当于Set NewMenu = Thisworkbook.CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True),执行起来就没什么用了。

 当然,如果写全了,效果还是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值