VBA--事件过程
点击上方
蓝色
文字 关注我们吧!
送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径!
在VBA中,当执行“打开工作簿”、“选择工作表”、“改变单元格的内容”等操作时,可以由此为触发条件(事件)自动执行某些过程。把由这些特定的操作触发并且自动被执行的过程,叫做事件过程。
事件过程是编写在触发事件的工作簿或工作表等对象的模块当中的。下面就是一个简单的事件过程。
当事件被执行后就自动运行宏。
制作事件过程
事件过程是针对触发事件的工作簿或工作表的,是编写在这些事件对象的模块当中的。例如,针对工作簿事件的事件过程编写在“ThisWorkbook模块”中。
事件过程是在作为事件对象的对象模块的代码窗口内进行编写的。事件过程名是在对象名和事件名中用“_(半角下划线)”连接起来按照“对象名_事件名”命名的,用户不能自由命名。
事件过程的语法:
Private Sub 对象名_事件名(参数)
事件发生的时候采取的操作
End Sub
下面制作一个工作表显示时候执行的宏作为例子
双击“ThisWorkbook”选项
自动生成“ThisWorkbook_Open”的事件过程。如果不需要,也可以将它删除,在过程框中选择事件,生成选择的事件过程。
编写事件发生时候执行的代码
执行效果如下:
事件的种类
作为对象的事件有很多种,例如打开工作簿的时候发生的Open事件,选择工作表时发生的Active事件等。理解事件的种类在“这个时候想做这样的事情”时可以知道选择哪个事件比较合适。
下面简单介绍一下事件过程参数的使用方法。
在事件过程中有参数,例如在Workbook_SHeetActive事件过程中,有保存当前激活工作表的参数“Sh”。
Worksheet_Change事件过程
Worksheet_Change事件过程是单元格的内容被更改的时候调用的事件过程。这个事件过程有一个“Target”参数。“Target”中保存了内容发生变化的所有单元格。也就是可以在该过程中编写针对Target中存放的所有单元格的处理代码。
使事件过程不发生的操作
事件不仅在用户操作的时候发生,在执行过程代码时也会发生,因此在过程内发生的事件有时候也会产生不希望的结果。这种时候可以临时取消过程运行时事件的发生,以及取消不必要的事件发生。为了取消事件的发生,设定Application对象的EnableEvents属性为False。如果在过程执行前设定了EnableEvents属性,那么可以阻止在过程运行中触发其它事件过程。
阻止事件发生的语法:
Application.EnableEvents=False
使用“Application.EnableEvents=False”取消事件的发生,以后所有的事件都被阻止,那么事件过程功能就被取消了。因此在临时取消事件发生的时候,必须在后面使用“Application.EnableEvents=True”来解除取消事件发生。
-END-
长按下方二维码关注EXCEL应用之家
面对EXCEL操作问题时不再迷茫无助
推荐阅读:
戳原文,更有料!免费模板文档!