admin 管理员组文章数量: 1087139
2024年3月9日发(作者:织梦百度编辑器源码)
第X课EXCEL基本事件
1 什么是事件
事件是一个对象可以辨认的动作,像单击鼠标或者按下某个键等等,并且可以编写某些
代码针对此动作做出响应。用户做动作或者程序代码的结果都可能导致事件的发生。在VBA
中,可以激发事件的用户动作包括:切换工作表、选择单元格和单击鼠标等几十种。事件发
生时,将执行包含事件过程中的代码。若用户没有定义某事件所调用的过程,那么当发生该
事件时,就不会产生任何反应。
2 Excel中事件的分类
Excel提供了非常多的事件,主要可以分为以下几类:
(1)工作簿事件
工作簿事件发生在特定的工作簿中,如Open(打开工作簿)、BeforeClose(关闭工作簿
之前)和SheetActive(激活任何一张表)等。工作簿事件的代码必须在Thiswork对象代码
模块中编写。
(2)工作表事件
工作表事件发生在特定的工作表中,如activate(激活工作表)、change(更改工作表中
的单元格)和SelectionChange(工作表上的选定区域发生改变)等。工作表事件的代码必须
在对应工作表的代码模块中编写。
(3)窗体、控件事件
新建的用户窗体及窗体上的控件可以响应很多事件,如Click(单击)、Change(控件内
容更改)等,这类事件的代码必须编在相应的用户窗体代码模块中。
图表事件
图表事件针对某个特殊的图表产生,例如Slect(选中了图表中的某个对象)和
SeriesChange(改变了系列中某个数据点的值)。
不与对象关联的事件
这类事件只有两个,分别是Online和Okey,根据时间和按钮来产生这两个事件。
3 工作薄事件
当工作薄更改,工作薄中任何工作表更改,加载宏更改或数据透视表更改时,都将引发
工作薄事件。若要查看工作薄事件,可以双击“工程资源管理器”(excel工作环境下按组合
键“Alt+F11”打开)窗口中的“ThisWorkBook”对象,打开“代码编辑器”窗口,在“过
程”下拉列表框中选择事件名称。Excel中的工作薄事件很多,下面选用几个常用事件
进行简单介绍,读者若用到其他工作薄事件可查阅相关文献和excel帮助文件。
(1)Open事件
打开工作薄时,将产生此事件。Workbook_Open事件只在工作薄打开时产生,在下一
次打开之前不再发生此事件。此事件中可以写入一些只需执行一次的代码,比如如果需要在
每次打开文件时在“Shee1”工作表的A列中记录文件打开时间,则应该使用此事件,代码
如下:
Private Sub Workbook_Open()
Worksheets("Sheets1") . Range("A1048576") . End(xlUp) .offset(1,0) .Value=
End Sub
对系统设置进行修改的代码不应编写在这个事件中,应写入Workbook_Activate事件中,
orkbook_Activate事件紧随在Workbook_Open事件后面发生。
(2)BeforeClose
事件
在关闭工作薄之前,先产生此事件。若该工作薄已经更改过,则本事件在询问用户是否
保存更改之前产生,其事件处理代码格式如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
当事件产生时,参数Cancel为False。如果该事件将Cancel设为True,则停止对工作薄
的关闭操作,工作薄仍处于打开状态。
一般情况下,只应在事件中加上以下功能,而不应将系统的设置或者恢复代码放在此处。
不显示是否保存修改对话框而保存保存工作薄的任何修改并放弃保存工作薄的任何修改,直
接退出时代码如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
=True
在程序中设置标志变量,控制用户直接按窗口上的“关闭”按钮退出系统,只有通过代
码设置标志变量为对应值才允许退出系统,具体代码如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If bFlag=False Then Cancle=Ture
(2)Activate事件
激活一个工作薄时产生该事件。所谓激活工作薄包括以下两种情况:
工作薄打开时,在Open事件之后发生该事件;从另一工作薄切换到本工作薄时发生该
事件;工作簿的Open事件可能被用户跳过,所以应该将系统设置的初始代码放在Activate
事件中。下例通过工作薄的Activate事件完成调用自定义菜单、隐藏工具栏等设置,其代码
如下:
版权声明:本文标题:EXCEL基本事件 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1709980075a552094.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论