作者: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),执行起来就没什么用了。
当然,如果写全了,效果还是一样的。
大家通过之前的介绍,已知道怎么将一个空模块插入
VBA
的工程中。从插入模块中可以看到,模块有有两种——标准模块与类模块。类模块是含有类定义的特殊模块,包括其属性和方法的定义。在后面会有介绍与说明。
随着工程越来越委员复杂,我们就有可能会有多个模块。使用多模块的好处就是,它允许将相关的过程聚合在一起,使
代码
的可维护性与可重用性大大提高,更使我们能够方便地管理
代码
。通过不同的模块,我们还可以为不同模块...
背景:一般情况下,打开Excel的文件类型为.xlsx,
编写
VBA
代码
后,关闭Excel,再次打开Excel后,
代码
消失
解决办法:更换文件类型,启用宏编辑
1.直接ctl+s
保存
VBA
代码
,弹出提示
2.根据弹框提示选择“否”
3.将文件另存为.xlsm格式的文件,文件名的后缀也会随之变化,无需处理
4.点击
保存
,生成新类型文件
5.直接打开新生成的.xlsm文件,就可以查看刚刚
编写
的
代码
了
作者:iamlaosong
SUM是Excel的函数,在
VBA
中调用需要加上Application.WorksheetFunction.Sum(),但是,Excel写法却不能用。
比如,excel单元格中可以写成=sum(d2:d100),
VBA
中是不能这么写的,即使加上引号写成Application.WorksheetFunction.Sum(“d2:d100”),语法上倒是没什么问题,却得...