分享免费的编程资源和教程

网站首页 > 技术教程 正文

要实现VBA自动化首先要了解一下:对象的事件

goqiw 2024-09-10 17:44:32 技术教程 38 ℃ 0 评论

什么是事件?

事件是对象在某个状态下触发的动作,事件是 VBA 为特定对象赋予的一个特性。不是每个对象都有事件,只有几类最常用的对象才有事件。

每一个事件都对应一个事件过程,通过事件过程可以让对象在满足特定条件时自动执行命令从而更方便地控制对象,同时也提升工作效率

可以用一个形象化的比喻来阐述事件,假设一只鸡蛋是一个对象,当它坠落并撞击地面它会破裂,此时就发生了坠落事件,摔碎是该事件的结果。如果我们把鸡蛋放在热水中并不断升温,此时就发生加温事件。随着温度的升高,鸡蛋内部的物质(蛋黄和蛋白)会开始变化,最后鸡蛋煮熟了,这是事件的结果....

具体到 Excel 中,工作簿是一个对象,打开工作簿时就触发了工作簿的打开事件,工作簿打开事件过程的书写方式如下:

Private Sub Workbook_Open()

End Sub

在以上过程中,Workbook 代表对象,Open 代表过程,在它们之间用“_”串连起来形成事件过程的完整名称。一切事件过程的名称都不允许被修改,否则该过程无法自动运行

在事件过程中允许随意指定命令,表示触发事件要执行的操作。假设需要在打开作簿时在第1个工作表的A1单元格中显示今天的日期,那么事件过程的代码如下:

Private Sub Workbook_Open()
	worksheets(1).Range("a1") = Date
End Sub

以上过程是工作簿事件过程,代码必须放在 ThisWorkbook 窗口中才生效,如图所示。

事件的分类及其层级关系

Excel中具有事件的对象包含Excel应用程序对象、工作簿对象工作表对象、图表对象、ActiveX控件对象、窗体对象、窗体中的控件。

应用程序对象、工作簿对象、工作表对象的事件被称作应用程序事件、工作簿事件和工作表事件,它们之间是有层级关系的,应用程序事件包含工作薄事件、工作簿事件包含工作表事件。当触发工作表事件时,同时也触发工作簿事件和应用程序事件,当触发工作簿事件时也会触发应用程序事件,但是反过来不成立,即触发高级别事件时不一定触发低级别事件。

事件一览可参考我前面的文章《VBA核心知识点:对象的方法和属性》介绍的方法查阅。

文章链接:https://www.toutiao.com/article/7299341638810386959/

这里需要特别说明的是:

  • 工作簿事件的代码必须放在ThisWorkbook 对象的代码窗口中,放在其他地方则只能当作普通的子过程处理,不具备自动执行的功能。
  • 工作表事件的代码必须放在工作表的代码窗口中,放在其他地方例如模块中或者ThisWorkbook 中将不具备自动执行的功能。

快速掌握事件过程

Excel 总共有几百个事件,对于每个事件过程的书写方式不需要花费任何精力和时间去记忆,通过鼠标在事件代码窗口的对象列表和过程列表中选择即可产生代码。而对于每个事件过程的含义也同样不需要花费时间去记忆,一是完全没有必要,二是由于事件的数量比较多,很难将它们记住。在此向伙伴们推荐两种快捷、有效的方法解决此问题。

  1. 查询帮助:在VBE截面按F1即可调出帮助页面,在此不展开详述。
  2. 打印笔记:对于常用的表格式的知识点,应将其整理到笔记 (Word 文件或者 Excel 表格文件)中,要用时从笔记中翻查答案。

当然,现在网络这么发达,直接百度也是可以的~

如果觉得读完有所收获,赏个免费的赞呗~,同时也欢迎 关注转发,我会经常和大家分享 VBA知识~

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表