1、事件:
事件,和日常生活中的差不多,就是发生了什么事情。
在Excel里,能发生的事件很多:
- 打开、关闭工作簿
- 新建工作簿
- 新建工作表
- 激活工作表
- 选择单元格
- 单元格改写
- …………
这些都是事件,其实就是平时手动操作Excel的一些动作。
在Excel VBA里提供了接口,在发生这些事件之前或者之后,让使用者可以设置一段运行的程序。
比如双击打开工作簿,可以设置运行一段程序:
上面就是一个工作簿打开事件,运行一段程序:
代码语言:javascript复制Private Sub Workbook_Open()
MsgBox "工作簿打开了"
End Sub
这种格式是固定的,必须按照这种模式,Excel VBA才能识别它为一个事件,所以为了避免使用者手动输入而造成的错误,Excel VBA提供了下拉选项让使用者直接选择。
左边是选择事件的主体(Workbook),右边是这个主体具有的事件。
2、代码存放的地方:
以前写的代码都是插入一个模块,在模块里编写代码。
Excel文件一旦创建,就已经创建好了几个特殊的模块:ThisWorkbook、Sheet1(有几个工作表就会有几个Sheet#模块)。这几个模块也可以像普通的模块一样编写代码,但是一般都是存放一些事件代码,像上面的Workbook_Open,是必须放在ThisWorkbook模块里面才会有效果的。
通过名称也能大概猜到:
- 工作簿的事件代码,必须存放在ThisWorkbook模块
- 工作表事件的代码,必须存放在对应的Sheet#模块
这里所说的代码存放不是说一定是所有需要的代码,只是那个过程的名称必须存放在对应的模块,中间仍然可以调用普通模块的函数或者过程,而这些函数或者过程的代码可以存放在普通的模块中。
3、事件的作用:
个人认为,事件代码的作用仅仅是为了一些操作上的方便,而对于数据处理来说,作用不大。
而且事件用的不恰当,会影响Excel的运行效率,刚接触事件的可能会觉得比较好玩,建议事件的使用场所是在一些比较简单的表格里,一旦数据运算非常复杂了,尽量不要去使用。