VBA 事件的初步认识(一)

今天是八一建军节,先向人民子弟兵致敬。

 

今天主要是学习了Excel的事件,下面讲讲个人学习总结。

 

一、EXCEL中的事件类型

EXCEL中插入事件宏比较简单,点一下工程资源管理上的sheet、chart或者Thisworkbook等等,然后在代码框下拉箭头选择worksheet、chart或者workbook,右侧就有很多的事件可以选择了。

VBA 事件的初步认识(一)

 

因为大多数操作都和工作簿有关,所以工作簿的事件会比其他的表或者图的事件要多一些。

VBA 事件的初步认识(一)

 

那么事件好几十个,怎么去学习好这些事件呢?对于EXCEL 来说,基本上干啥都会触发事件,比如点了一下鼠标触发点鼠标事件,输入文字触发单元格改变的事件等等,下面具体讲讲各个事件内容。

二、使用前一些注意事项

一是了解事件发生的顺序是很重要的。比如说新建一个工作表,我们一般点一下sheet边上的“+”加号,那么这过程中就涉及到:1.工作簿新增工作表;2.原来活动的工作表取消**了;3.新增加的工作表被**了。了解了事件发生的顺序我们就知道下拉选择什么事件比较合适。

 

二是防止死循环是很重要的,所以再把禁用事件也讲一下,毕竟准备工作放在前头是很重要的,禁用方法如下:

Application.EnableEvents = False

同理,启用把False改成True即可。

比如说设置了单元格改变就出发的事件,用伪代码来示例:

单元格改变的事件

对单元格进行操作

结束事件

这个事件存在的问题就是,“对单元格进行操作”又会触发单元格改变的事件本身,会造成死循环,所以需要禁用事件。

三是事件都是private 的过程,想想也是,每个表都有自己的事件,如果还public可不就得重名啦。

 

三、常用事件的实际操作

主要涉及以下几类

1.工作簿

2.sheet

3.图表和其他

 

1.工作簿的事件。因为事件太多,所以我就把学习的截图直接放上来啦。

VBA 事件的初步认识(一)

大多数看英文应该就能猜到主要用途,下面讲讲常用的事件。

1.1 Open。打开时触发,没有可选参数。

1.2 Activate 。也没有参数,**的时候触发。

1.3 SheetActivate。有个Object类型的参数,主要是sheet对象可能是图表,所以参数不是sheet类型

1.4 NewSheet。也有个Object类型的参数,原因同1.3

1.5 BeforeSave。有个布尔型的参数,是否显示另存为

1.6 Deactivate。没有参数。

1.7 BeforePrint。有个布尔型的参数,是否显示打印预览或者取消打印。准备打印、打印预览的时候触发,比如可以用来设置打印的比例或者页眉页脚。

1.8 BeforeClose。两个布尔型参数,cancel参数改成True就停止关闭。

 

2.工作表的事件。事件也很多,所以我继续偷个懒,把学习的截图直接放上来啦。

VBA 事件的初步认识(一)

2.1 Change。有一个Range类型的参数。也就是改变后的单元格或单元格区域,就会被这个参数接收。但是Change的触发有一下几个情况需要注意:

2.1.1 改变单元格格式不会触发,但是复制后粘贴格式会触发;清除格式也会触发;

2.1.2 合并单元格不会触发,即使有内容的单元格合并后丢失内容都不会触发;

2.1.3 插入批注不会触发

2.1.4 对着任何单元格按Delete都会触发,即使没内容。

 

因为内容比较多,今天先讲到这里啦~下集继续