EXCEL基本事件

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第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列中记录文件打开时间,则应该使用此事件,代码如下:

Worksheets("Sheets1") . Range("A1048576") . End(xlUp) .offset(1,0) .V alue=VBA.now

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)

Me.saved=True

在程序中设置标志变量,控制用户直接按窗口上的“关闭”按钮退出系统,只有通过代码设置标志变量为对应值才允许退出系统,具体代码如下:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If bFlag=False Then Cancle=Ture

(2)Activate事件

激活一个工作薄时产生该事件。所谓激活工作薄包括以下两种情况:

工作薄打开时,在Open事件之后发生该事件;从另一工作薄切换到本工作薄时发生该事件;工作簿的Open事件可能被用户跳过,所以应该将系统设置的初始代码放在Activate 事件中。下例通过工作薄的Activate事件完成调用自定义菜单、隐藏工具栏等设置,其代码如下:

Application.ScreenUpdating=False

Application.Cursor=xlDefault

Application.Caption="学生成绩管理系统"

Application.Caption=""

mandbars("Toolbar list").Enabled = False

mandbars("Standard").Visible = False

mandbars("Formatting").Visible = False

Application.DisplayFormulabar = False

Application.DisplayStatusBar = Ture

ActiveWindow.DisplayWorkbookTabs = False

HideBar

MyBar_Menu

Sheets("主界面").ScrollArea = "A1:M38"

Sheets("主界面").Activate

Application.ScreenUpdating = True

End Sub

(2) NewSheet事件

在工作薄中新建工作表时产生此事件,其事件处理代码格式如下:

Private Sub Workbook_Newsheet(ByV al Sh As Object)

例如,在Excel中新建工作表时默认取名为Sheet后面加上一个数字,使用以下代码可以为新建的工作表生成中文名称。

Private Sub Workbook_Newsheet(ByV al Sh As Object)

n=Workheets.Count

If TypeName(Sh)="Workheets" Then

="工作表"&n

End If

End sub

程序通过Worksheets.Count获取当前工作的数量,然后判断新建表的类型。如果是工作表,则对新建的工作表进行命名。

(2)BeforeSave事件

保存工作薄之前产生此事件,其事件处理代码格式如下:

Private Sub Workbook_BeforeSave(ByV al SaveAsUI As Boolean,Cancle As Boolean)

事件过程中有两个参数,如果显示“另存为”对话框,则参数SaveAsUi为True。参数cancel的值当事件产生时为False,如果该事件过程将本参数设为True,则该过程执行结束之后不保存工作薄。针对该事件的两个参数,该事件一般可以完成以下功能:

●禁止文件保存,但可以对原文件的修改进行保存;

●禁止保存修改,使保存与另存为功能都失效。

例如,以下代码在保存工作薄之前询问用户是否保存文件。在保存工作薄之前产生此事件,那么只要在该事件中写入一行代码就可以完全禁止文件被保存,而且连另存为对话框也

相关文档
最新文档