添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
老实的打火机  ·  使用VBA在IE ...·  21 小时前    · 
帅气的木耳  ·  Support for VBA Macros·  21 小时前    · 
大气的剪刀  ·  《SeleniumBasic ...·  21 小时前    · 
坏坏的抽屉  ·  CURLM (etc.c.curl.CURLM)·  9 月前    · 
大鼻子的蚂蚁  ·  Build Error with ...·  1 年前    · 
听话的日光灯  ·  Configuring CMake for ...·  1 年前    · 

作者: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”),语法上倒是没什么问题,却得...