关键词不能为空

当前您在: 主页 > 英语 >

EXCEL VBA 事件示例说明

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-22 17:21
tags:

-

2021年2月22日发(作者:实蝇)


二、


Excel


事件(


A-E




1



Activate


事件



激活一个工作簿、工作表、图表或嵌入式图表时产生此事件。



语法



Private Sub


object


_Activate()


object



Chart

< p>


Workbook


、或者



Worksheet


。有关使用



Chart


对象的事件的详细内容,




参阅(


1


) 嵌入式图表事件的用法。




说明



切换两个显示同一工作簿的窗口时,将产生



WindowActivate


事件,但不产生工作簿的




A


ctivate


事件。



新建窗口时不产生本事件。



示例:


Activate


事件示例



本示例当激活工作表时对



A1:A10


区域进行排序。



Private Sub Worksheet_


Activate


()



Range(


End Sub



1



嵌入式图表 事件的用法



默认情况下,图表工作表的事件都是可用的。但在 使用嵌入式图表的事件之前,必须创建新



的类模块,并与事件一起声明



Chart


类型的对象。例如,假定创建了新的类模块


< br>“


EventClassModule”


,该模块内应包 含下述代码:




Public WithEvents myChartClass As Chart


< p>
事件一起声明了新的对象之后,该对象将出现在类模块的


“Object”


下拉列表框内;此时就



< p>


为该对象编写事件处理过程了。(在



对象



下拉列表框内选定该对象后,

< p>


过程



下拉列表




框内将列出该对象的有效事件)。



在 事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在



任意的模块中用下述代码完成这一操作。



Dim myClassModule As New EventClassModule


Sub InitializeChart()



Set tClass = _



Worksheets(1).ChartObjects(1).Chart


End Sub


运行了


“Initi alizeChart”


过程之后,类模块中的



myChartClass


对象将指向第



张工作表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件





理过程。




2



AddinInstall


事件



当工作簿作为加载宏载入时产生此事件。



语法


Private Sub Workbook_AddinInstall()


示例:


AddinInstall


事件示例



本示例当指定工作簿作为加 载宏载入时将一个控件添加到标准工具栏中。



Private Sub Workbook_


AddinInstall


()


With dbars(


.Caption =


.OnAction =


End With End Sub


End Sub


3



AddinUninstall


事件



当工作簿作为加载宏卸载时产生此事件。



语法



Private Sub Workbook_AddinUninstall()


说明



卸载加载宏并不同时关闭该加载宏。



示例:


AddinUninstall


事件示例



本示例当指定工作簿作为加载宏卸载时将



Microsoft Excel


最小化。



Private Sub Workbook_


AddinUninstall


()


State = xlMinimized


End Sub


4



AfterRefresh


事件



当一个查询完成或者取消时产生此事件。



语法



Private Sub Qu eryTable_AfterRefresh(


Success



As Boolean)


Success



如果查询成功完成则为



True




示例:


AfterRefresh


事件示例



本示例使用



Success


参数判断查询是否成功完成。



Private Sub QueryTable_


After Refresh


(Success As Boolean)


If Success


' Query completed successfully Else


' Query failed or was cancelled End If


End Sub


5



BeforeClose


事件



关闭工作簿时先产生此事件。如 果该工作簿已经更改过,本事件在询问用户是否保存更改之



前产生。



语法



Private Sub Workbook_BeforeClose(


Cancel



As Boolean)


Cancel



当事件产生时为



False


。如果该事件过程将本参数设为



True


,则停止对工作簿的



关闭操作,工作薄仍处于打开状态。



示例:


BeforeClose


事件示例



本示例将



BeforeClose


事件的响应设置为保存工作簿的任何更改。



Private Sub Workbook_


BeforeClose


(Cancel as Boolean)



If = False Then


End Sub


6


、< /p>


BeforeDoubleClick


事件(缺)



7



BeforePrint


事件



在打印指定工作簿(或者其中的某些内容)之前产生此事件。



语法



Private Sub Workbook_BeforePrint(


Cancel



As Boolean)


Cancel



当事件产生时为



False


。如果该事件过程将本参数设为



True


,则当该过程运行结



束之后不打印工作簿。



示例:


BeforePrint


事件示例



本示例在打印之前对活动工作簿的所有工作表重新计算。



Private Sub Workbook_


BeforePrint


(Cancel As Boolean)


For Each wk in Worksheets


ate


Next


End Sub


8



BeforeRefresh


事件



在刷新查询表之前产生此事件。这里的刷新包括调用



Refresh


方法引起的变化,用户的操



作引起的变化和打开包含该查询表的工作簿引起的变化。



语法



Private Sub Qu eryTable_BeforeRefresh(


Cancel



As Boolean)


Cancel



当事件产生时为



False


。如果该事件过程将本参数设为



True


,则该过程执行结束



之后不进行刷新。



示例:


BeforeRefresh


事件示例



本示例在刷新查询表之前运行。


Private Sub Qu eryTable_


BeforeRefresh


(Cance l As Boolean)


a = MsgBox(


If a = vbNo Then Cancel = True


MsgBox Cancel


End Sub


9



BeforeRightClick


事件



当右击一个嵌入式图表或工作表 时产生此事件,此事件的产生先于默认的右击操作。



语法



1


Private Sub


object


_BeforeRightClick(


Cancel



As Boolean)


语法



2


Private Sub Worksheet_BeforeRightClick(ByVal


Target



As Range


,


Cancel



As


Boolean)


object



在类模块中带有事件声明的



Chart


类型对象。有关详细内容,请参阅


嵌入式图表



事件的用法




Target



右击发生时最靠近鼠标指针的单元格。



Cancel



当事件产生时为



False


。如果该事件过程将本参数设为



True


,则该过程执行结束



之后不进行默认的右击操作。



说明



与其他工作表事件相似,当指针 位置在形状或命令栏(工具栏或者菜单栏)上时,右击不触



发本事件。



示例:


BeforeRightClick


事件示例



本示例为


B1:B10


单元格添加快捷菜单项。



Private Sub Worksheet_


Before RightClick


(ByVal Target As Range, _


Cancel As Boolean)


For Each icbc In dBars(



If =


Next icbc


If Not ect(Target, Range(



Is Nothing Then


With dBars(



.Add(Type:=msoControlButton, before:=6, _



temporary:=True)


.Caption =


.OnAction =


.Tag =


With


End If


End Sub



1

< p>
)嵌入式图表事件的用法



默认情况下,图表工作 表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新



的类模块,并与事件一起声明



Chart


类型的对象。例如,假定创建了新的类模块


< br>“EventClassModule”


,该模块内应包含下述代码:

< p>


Public WithEvents myChartClass As Chart


与事件一起声明了新的对象之后,该对象将出现在类模块的


“Object”


下拉列表框内;此时就



可为该对象编写事件处理过程了。(在



对 象



下拉列表框内选定该对象后,


“< /p>


过程



下拉列表



框内将列出该对象的有效事件)。



在 事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在



任意的模块中用下述代码完成这一操作。



Dim myClassModule As New EventClassModule


Sub InitializeChart()


Set tClass = _


Worksheets(1).ChartObjects(1).Chart


End Sub


运行了


“Initi alizeChart”


过程之后,类模块中的



myChartClass


对象将指向第一张工作



表上的第一个 嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。



10



BeforeSave


事件



保存工作簿之前产生此事件。



语法



Private Sub Workbook_BeforeSave(ByVal


SaveAsUi



As Boolean


,


Cancel



As


Boolean)


SaveAsUi



如果显示



另存为



对话框则为



True




Cancel



当事件产生时为



False


。如果该事件过程将本参数设为



True


,则该过程执行结束



之后不保存工作簿。



示例:


BeforeSave


事件示例



本示例在保存工作簿之前询问用户是否保存。



Private Sub Workbook_


BeforeSave


(ByVal SaveAsUI As Boolean, _


Cancel as Boolean)


a = MsgBox(


If a = vbNo Then Cancel = True


End Sub


11



Calculate


事件



Chart

< br>对象:在图表对新的数据点或者更改的数据点绘制之后产生此事件。



Worksheet


对象:在对工作表进行重新计算之后产生此事件。



语法



Private Sub


object


_Calculate()


object



Chart


对象或



Worksheet


对象。有关对



Chart


对象使用事件的详细内容,请参



阅嵌入式图表事件的用法。



示例:


Calculate


事件示例



本示例每当工作表重新计算时就对



A


列到



F


列的宽度进行调整。



Private Sub Worksheet_


Calculate


()


Columns(


End Sub



1


)嵌入式图表事件的用法



默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新



的类模块,并与事件一起声明



Chart


类型的对象。例如,假定创建了新的类模块


< br>“EventClassModule”


,该模块内应包含下述代码:

< p>


Public WithEvents myChartClass As Chart


与事件一起声明了新的对象之后,该对象将出现在类模块的


“Object”


下拉列表框内;此时就



可为该对象编写事件处理过程了。(在



对 象



下拉列表框内选定该对象后,


“< /p>


过程



下拉列表



框内将列出该对象的有效事件)。



在 事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在



任意的模块中用下述代码完成这一操作。



Dim myClassModule As New EventClassModule


Sub InitializeChart()


Set tClass = _


Worksheets(1).ChartObjects(1).Chart


End Sub


运行了


“Initi alizeChart”


过程之后,类模块中的



myChartClass


对象将指向第一张工作表上的



第一个 嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。



12



Change


事件



当用户更改工作表中的单元格, 或外部链接引起单元格的更改时产生此事件。



语法



Private Sub Worksheet_Change(ByVal


Target



As Range)


Target



更改的区域。可为多个单元格。



说明



重新计算引起的单元格更改不触发本事件。可使用



Calculate


事件俘获工作表重新计算操



作。



删除单元格并不触发此事件。



示例:


Change


事件示例



本示例将更改的单元格的颜色设为蓝色。



Private Sub Worksheet_


Change


(ByVal Target as Range)


ndex = 5


End Sub


13



Deactivate


事件



图表、工作表或工作簿从活动状 态转为非活动状态时产生此事件。



语法



Private Sub


object


_Deactivate()


object



Chart


对象、



Workbook


对象或



Worksheet


对象。有关对



Chart


对象使用事



件的详细内容,请参阅< /p>


嵌入式图表事件的用法




示例:


Deactivate


事件示例



本示例当工作簿转为非活动状态时对所有打开的窗口进行排列。



Private Sub Workbook_Deactivate()


e xlArrangeStyleTiled


End Sub



1


)嵌入式图表事件的用法



默认情况下,图表工作表的事件都是可用的。但在使用嵌入式 图表的事件之前,必须创建新



的类模块,并与事件一起声明



Chart


类型的对象。例如,假定创建了新的类模块


< br>“EventClassModule”


,该模块内应包含下述代码:

< p>


Public WithEvents myChartClass As Chart


与事件一起声明了新的对象之后,该对象将出现在类模块的


“Object”


下拉列表框内;此时就



可为该对象编写事件处理过程了。(在



对 象



下拉列表框内选定该对象后,


“< /p>


过程



下拉列表



框内将列出该对象的有效事件)。



在 事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在



任意的模块中用下述代码完成这一操作。



Dim myClassModule As New EventClassModule


Sub InitializeChart()


Set tClass = _


Worksheets(1).ChartObjects(1).Chart


End Sub


运行了


“Initi alizeChart”


过程之后,类模块中的



myChartClass


对象将指向第一张工作表上的



第一个 嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。



14



DragOver


事件



当将一个单元格区域拖过图表时产生此事件。



语法



Private Sub


object


_DragOver()


object



在类模块中带有事件声明的



Chart


类型对象。有关详细内容,请参阅


嵌入式图表



事件的用法




示例:


DragOver


事件示例



本示例显示拖过图表的单元格区域的地址。



Private Sub Chart_DragOver()


MsgBox s


End Sub



1


)嵌入式图表事件的用法



默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新



的类模块,并与事件一起声明



Chart


类型的对象。例如,假定创建了新的类模块


< br>“EventClassModule”


,该模块内应包含下述代码:

< p>


Public WithEvents myChartClass As Chart


与事件一起声明了新的对象之后,该对象将出现在类模块的


“Object”


下拉列表框内;此时就



可为该对象编写事件处理过程了。(在



对 象



下拉列表框内选定该对象后,


“< /p>


过程



下拉列表



框内将列出该对象的有效事件)。



在 事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在



任意的模块中用下述代码完成这一操作。



Dim myClassModule As New EventClassModule


Sub InitializeChart()


Set tClass = _


Worksheets(1).ChartObjects(1).Chart


End Sub


运行了


“Initi alizeChart”


过程之后,类模块中的



myChartClass


对象将指向第一张工作表上的



第一个 嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。


15



DragPlot


事件



将一个单元格区域拖放到图表上时产生此事件。



语法



Private Sub


object


_DragPlot()


object



在类模块中带有事件声明的



Chart


类型对象。有关详细内容,请参阅


嵌入式图表



事件的用法




示例:


DragPlot


事件示例



本示例当将单元格区域拖放到图表上时更改该图表的类型。



Private Sub Chart_DragPlot()


ype = xlLine


End Sub



1


)嵌入式图表事件的用法



默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建 新



的类模块,并与事件一起声明


Chart


类型的对象。例如,假定创建了新的类模块



“EventClassModule”


,该模块内应包含下述代码 :



Public WithEvents myChartClass As Chart


与事件一起声明了新的对象之后,该对 象将出现在类模块的


“Object”


下拉列表框内;此时



就可为该对象编写事件处理过程了。(在



对象



下拉列表框内选定该对象后,



过程



下< /p>



拉列表框内将列出该对象的有效事件)。


在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在

< br>


任意的模块中用下述代码完成这一操作。



Dim myClassModule As New EventClassModule


Sub InitializeChart()


Set tClass = _


Worksheets(1).ChartObjects(1).Chart


End Sub


运行了


“Initi alizeChart”


过程之后,类模块中的



myChartClass


对象将指向第一张工作



表上的第一个 嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。


二、


Excel


事件(


F-R




1



FollowHyperlink


事件



当鼠标单击工作表上的任意超级 链接时将发生此事件。对于应用程序或工作簿级的事件,请



参阅



SheetFollowHyperlink


事件。



语法



Private Sub Worksheet_FollowHyperlink


(


ByVal


Target



As Hyperlink


)


Target



必选。


Hyperlink


类型。一个代表超级链接目标位置的



Hyperlink


对象。



示例:


FollowHyperlink


事件示例



本示例对在活动工作簿中访 问过的所有链接保留一个列表或历史记录。



Private Sub Worksheet_


FollowHyperlink


(ByVal Target As Hyperlink)


With UserForm1


.m s .Show


End With End


Sub


2



GotFocus


事件





ActiveX


控件获得输入焦点时,产生本事件。



语法



Private Sub


object


_GotFocus()


object



ActiveX


控件的名称。



示例:


GotFocus


事件示例




“ListBox1”


获得输入焦点时,将运行本示例。



Private Sub ListBox1_


GotFocus


()



' runs when list box gets the focus


End Sub


3



LostFocus


事件





ActiveX


控件失去输入焦点时,产生本事件。



语法



Private Sub


object


_LostFocus()


object



ActiveX


控件的名称。



示例:


LostFocus


事件示例




“ListBox1”


失去输入焦点时,将运行本示例。



Private Sub ListBox1_


LostFocus


()



' runs when list box loses the focus


End Sub


4



MouseDown

< p>
事件


当在图表上按下鼠标键时产生此事件。



语法




P


rivate Sub


object


_MouseDown(ByVal


Button



As Long


,


ByVal


Shift



As Long


,


ByVal


X


As Long


,


ByVal


Y



As Long)


object



在类模块中带有事件声明的



Chart


类型对象。有关详细内容,请参阅


嵌入式图表




件的用法




B


utton



按下的鼠标键。可为下列



XlMouseButton


常量之一:



xlNoButton





xlPrimaryButton




xlSecondaryButton




xlMiddleButton




Shift



此事件产生时



SHIFT




CTRL




ALT


键的状态。可为下列取值之一或者某几个值



的和。



取值



0


(零)



没有键按下



1


2


4


SHIFT




CTRL




ALT




意义



X



鼠标指针在图表对象的客户坐标系中的



X


坐标。



Y



鼠标指针在图表对象的客户坐标系中的



Y


坐标。



示例:


MouseDown


事件示例



本示例对


MouseDown


事件响应进行设置,当在图表上按下鼠标键时运行本示例。



Private Sub Chart_MouseDown(ByVal Button As Long, _





End Sub



1


)嵌入式图表事件的用法




认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建 新





类模块,并与事件一起声明


Chart


类型的对象。例如,假定创建了新的类模块




“EventClassModule”

,该模块内应包含下述代码:



Public WithEvents myChartClass As Chart


与事件一起声 明了新的对象之后,该对象将出现在类模块的


“Object”


下拉列表框内;此时



就可为该对象编写事件处理过程了。(在



对象



下拉 列表框内选定该对象后,



过程





拉列表框内将列出该对象的有效事件)。



ByVal Shift As Long, ByVal X As Long, ByVal Y As Long)


MsgBox




在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图 表连接起来。可在



任意的模块中用下述代码完成这一操作。



Dim myClassModule As New EventClassModule


Sub InitializeChart()


Set tClass = _



W orksheets(1).ChartObjects(1).Chart


End Sub


运行了


“InitializeChart”


过程之后,类模块中的



myChartClass


对象将指向第一张工作



表上的第一个 嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。



5



MouseMove


事件



当鼠标指针在图表上的位置改变时产生此事件。



语法



Private Sub


object


_MouseMove(ByVal


X



As Long


,


ByVal


Y



As Long)


object



在类模块中带有事件声明的



Chart


类型对象。有关详细内容,请参阅


嵌入式图表



事件的用法




X



鼠标指针在图表对象的客户坐标系中的



X


坐标。



Y



鼠标指针在图表对象的客户坐标系中的



Y


坐标。



示例:


MouseMove


事件示例



本示例当在图表上移动鼠标指针时运行本示例。



Private Sub Chart_MouseMove(ByVal X As Long, ByVal Y As Long)



MsgBox


End Sub


(< /p>


1


)嵌入式图表事件的用法


< p>


认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之 前,必须创建新





类模块,并与事件一起声明


Chart


类型的对象。例如,假定创建了新的类模块




“EventClassModule”

,该模块内应包含下述代码:



Public WithEvents myChartClass As Chart


与事件一起声 明了新的对象之后,该对象将出现在类模块的


“Object”


下拉列表框内;此时



就可为该对象编写事件处理过程了。(在



对象



下拉 列表框内选定该对象后,



过程





拉列表框内将列出该对象的有效事件)。


在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在

< br>


任意的模块中用下述代码完成这一操作。



Dim myClassModule As New EventClassModule


Sub InitializeChart()



Set tClass = _



Worksheets(1).ChartObjects(1).Chart


End Sub


运行了


“Initi alizeChart”


过程之后,类模块中的



myChartClass


对象将指向第一张工作



表上的第一个 嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。



6



MouseUp


事件



当在图表上释放鼠标按键时产生此事件。



语法

-


-


-


-


-


-


-


-



本文更新与2021-02-22 17:21,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/669488.html

EXCEL VBA 事件示例说明的相关文章