EXCEL VBA 事件示例说明
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
object 在类模块中带有事件声明的 Chart 类型对象。有关详细内容,请参阅嵌入式图表 事件的用法。
Target 右击发生时最靠近鼠标指针的单元格。
Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则该过程执行结束 之后不进行默认的右击操作。
说明
与其他工作表事件相似,当指针位置在形状或命令栏(工具栏或者菜单栏)上时,右击不触 发本事件。
End Sub
3、AddinUninstall 事件
当工作簿作为加载宏卸载时产生此事件。
语法
Private Sub Workbook_AddinUninstall()
说明
卸载加载宏并不同时关闭该加载宏。
示例:AddinUninstall 事件示例
本示例当指定工作簿作为加载宏卸载时将 Microsoft Excel 最小化。
10百度文库BeforeSave 事件
保存工作簿之前产生此事件。
语法
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
SaveAsUi 如果显示“另存为”对话框则为 True。
Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则该过程执行结束 之后不保存工作簿。
Success 如果查询成功完成则为 True。
示例:AfterRefresh 事件示例 本示例使用 Success 参数判断查询是否成功完成。
Private Sub QueryTable_AfterRefresh(Success As Boolean) If Success ' Query completed successfully Else ' Query failed or was cancelled End If
示例:BeforeClose 事件示例 本示例将 BeforeClose 事件的响应设置为保存工作簿的任何更改。
Private Sub Workbook_BeforeClose(Cancel as Boolean) If Me.Saved = False Then Me.Save
End Sub 6、BeforeDoubleClick 事件(缺) 7、BeforePrint 事件 在打印指定工作簿(或者其中的某些内容)之前产生此事件。
示例:Calculate 事件示例
本示例每当工作表重新计算时就对 A 列到 F 列的宽度进行调整。
Private Sub Worksheet_Calculate() Columns("A:F").AutoFit
End Sub
(1)嵌入式图表事件的用法
Private Sub Workbook_AddinUninstall() Application.WindowState = xlMinimized
End Sub
4、AfterRefresh 事件
当一个查询完成或者取消时产生此事件。
语法
Private Sub QueryTable_AfterRefresh(Success As Boolean)
示例:BeforeSave 事件示例
本示例在保存工作簿之前询问用户是否保存。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel as Boolean)
a = MsgBox("Do you really want to save the workbook?", vbYesNo) If a = vbNo Then Cancel = True End Sub
Next icbc If Not Application.Intersect(Target, Range("b1:b10")) _
Is Nothing Then With Application.CommandBars("cell").Controls _ .Add(Type:=msoControlButton, before:=6, _ temporary:=True) .Caption = "New Context Menu Item" .OnAction = "MyMacro" .Tag = "brccm"
Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each wk in Worksheets wk.Calculate Next
End Sub
8、BeforeRefresh 事件
在刷新查询表之前产生此事件。这里的刷新包括调用 Refresh 方法引起的变化,用户的操 作引起的变化和打开包含该查询表的工作簿引起的变化。
End With End If End Sub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新 的类模块,并与事件一起声明 Chart 类型的对象。例如,假定创建了新的类模块 “EventClassModule”,该模块内应包含下述代码:
Public WithEvents myChartClass As Chart
说明
切换两个显示同一工作簿的窗口时,将产生 WindowActivate 事件,但不产生工作簿的 Activate 事件。
新建窗口时不产生本事件。
示例:Activate 事件示例
本示例当激活工作表时对 A1:A10 区域进行排序。
Private Sub Worksheet_Activate() Range("a1:a10").Sort Key1:=Range("a1"), Order:=xlAscending
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”下拉列表框内;此时就 可为该对象编写事件处理过程了。(在“对象”下拉列表框内选定该对象后,“过程”下拉列表 框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在 任意的模块中用下述代码完成这一操作。
Dim myClassModule As New EventClassModule
Sub InitializeChart() Set myClassModule.myChartClass = _ Worksheets(1).ChartObjects(1).Chart
End Sub
运行了“InitializeChart”过程之后,类模块中的 myChartClass 对象将指向第 一张工作表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件 处理过程。
2、AddinInstall 事件
当工作簿作为加载宏载入时产生此事件。
语法
Private Sub Workbook_AddinInstall()
示例:AddinInstall 事件示例
本示例当指定工作簿作为加载宏载入时将一个控件添加到标准工具栏中。
Private Sub Workbook_AddinInstall() With Application.Commandbars("Standard").Controls.Add .Caption = "The AddIn's menu item" .OnAction = "'ThisAddin.xls'!Amacro" End With End Sub
语法
Private Sub QueryTable_BeforeRefresh(Cancel As Boolean)
Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则该过程执行结束 之后不进行刷新。
示例:BeforeRefresh 事件示例
本示例在刷新查询表之前运行。
Private Sub QueryTable_BeforeRefresh(Cancel As Boolean) a = MsgBox("Refresh Now?", vbYesNoCancel) If a = vbNo Then Cancel = True MsgBox Cancel
示例:BeforeRightClick 事件示例
本示例为 B1:B10 单元格添加快捷菜单项。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _ Cancel As Boolean)
For Each icbc In Application.CommandBars("cell").Controls If icbc.Tag = "brccm" Then icbc.Delete
End Sub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新 的类模块,并与事件一起声明 Chart 类型的对象。例如,假定创建了新的类模块 “EventClassModule”,该模块内应包含下述代码:
Public WithEvents myChartClass As Chart
End Sub
5、BeforeClose 事件 关闭工作簿时先产生此事件。如果该工作簿已经更改过,本事件在询问用户是否保存更改之 前产生。
语法
Private Sub Workbook_BeforeClose(Cancel As Boolean) Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则停止对工作簿的 关闭操作,工作薄仍处于打开状态。
Dim myClassModule As New EventClassModule Sub InitializeChart()
Set myClassModule.myChartClass = _ Worksheets(1).ChartObjects(1).Chart
End Sub
运行了“InitializeChart”过程之后,类模块中的 myChartClass 对象将指向第一张工作 表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
11、Calculate 事件
Chart 对象:在图表对新的数据点或者更改的数据点绘制之后产生此事件。
Worksheet 对象:在对工作表进行重新计算之后产生此事件。
语法
Private Sub object_Calculate()
object Chart 对象或 Worksheet 对象。有关对 Chart 对象使用事件的详细内容,请参 阅嵌入式图表事件的用法。
二、Excel 事件(A-E)
1、Activate 事件
激活一个工作簿、工作表、图表或嵌入式图表时产生此事件。
语法
Private Sub object_Activate()
object Chart、Workbook、或者 Worksheet。有关使用 Chart 对象的事件的详细内容, 请参阅(1)嵌入式图表事件的用法。
与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就 可为该对象编写事件处理过程了。(在“对象”下拉列表框内选定该对象后,“过程”下拉列表 框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在 任意的模块中用下述代码完成这一操作。
语法
Private Sub Workbook_BeforePrint(Cancel As Boolean) Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则当该过程运行结 束之后不打印工作簿。
示例:BeforePrint 事件示例
本示例在打印之前对活动工作簿的所有工作表重新计算。
Target 右击发生时最靠近鼠标指针的单元格。
Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则该过程执行结束 之后不进行默认的右击操作。
说明
与其他工作表事件相似,当指针位置在形状或命令栏(工具栏或者菜单栏)上时,右击不触 发本事件。
End Sub
3、AddinUninstall 事件
当工作簿作为加载宏卸载时产生此事件。
语法
Private Sub Workbook_AddinUninstall()
说明
卸载加载宏并不同时关闭该加载宏。
示例:AddinUninstall 事件示例
本示例当指定工作簿作为加载宏卸载时将 Microsoft Excel 最小化。
10百度文库BeforeSave 事件
保存工作簿之前产生此事件。
语法
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
SaveAsUi 如果显示“另存为”对话框则为 True。
Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则该过程执行结束 之后不保存工作簿。
Success 如果查询成功完成则为 True。
示例:AfterRefresh 事件示例 本示例使用 Success 参数判断查询是否成功完成。
Private Sub QueryTable_AfterRefresh(Success As Boolean) If Success ' Query completed successfully Else ' Query failed or was cancelled End If
示例:BeforeClose 事件示例 本示例将 BeforeClose 事件的响应设置为保存工作簿的任何更改。
Private Sub Workbook_BeforeClose(Cancel as Boolean) If Me.Saved = False Then Me.Save
End Sub 6、BeforeDoubleClick 事件(缺) 7、BeforePrint 事件 在打印指定工作簿(或者其中的某些内容)之前产生此事件。
示例:Calculate 事件示例
本示例每当工作表重新计算时就对 A 列到 F 列的宽度进行调整。
Private Sub Worksheet_Calculate() Columns("A:F").AutoFit
End Sub
(1)嵌入式图表事件的用法
Private Sub Workbook_AddinUninstall() Application.WindowState = xlMinimized
End Sub
4、AfterRefresh 事件
当一个查询完成或者取消时产生此事件。
语法
Private Sub QueryTable_AfterRefresh(Success As Boolean)
示例:BeforeSave 事件示例
本示例在保存工作簿之前询问用户是否保存。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel as Boolean)
a = MsgBox("Do you really want to save the workbook?", vbYesNo) If a = vbNo Then Cancel = True End Sub
Next icbc If Not Application.Intersect(Target, Range("b1:b10")) _
Is Nothing Then With Application.CommandBars("cell").Controls _ .Add(Type:=msoControlButton, before:=6, _ temporary:=True) .Caption = "New Context Menu Item" .OnAction = "MyMacro" .Tag = "brccm"
Private Sub Workbook_BeforePrint(Cancel As Boolean) For Each wk in Worksheets wk.Calculate Next
End Sub
8、BeforeRefresh 事件
在刷新查询表之前产生此事件。这里的刷新包括调用 Refresh 方法引起的变化,用户的操 作引起的变化和打开包含该查询表的工作簿引起的变化。
End With End If End Sub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新 的类模块,并与事件一起声明 Chart 类型的对象。例如,假定创建了新的类模块 “EventClassModule”,该模块内应包含下述代码:
Public WithEvents myChartClass As Chart
说明
切换两个显示同一工作簿的窗口时,将产生 WindowActivate 事件,但不产生工作簿的 Activate 事件。
新建窗口时不产生本事件。
示例:Activate 事件示例
本示例当激活工作表时对 A1:A10 区域进行排序。
Private Sub Worksheet_Activate() Range("a1:a10").Sort Key1:=Range("a1"), Order:=xlAscending
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”下拉列表框内;此时就 可为该对象编写事件处理过程了。(在“对象”下拉列表框内选定该对象后,“过程”下拉列表 框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在 任意的模块中用下述代码完成这一操作。
Dim myClassModule As New EventClassModule
Sub InitializeChart() Set myClassModule.myChartClass = _ Worksheets(1).ChartObjects(1).Chart
End Sub
运行了“InitializeChart”过程之后,类模块中的 myChartClass 对象将指向第 一张工作表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件 处理过程。
2、AddinInstall 事件
当工作簿作为加载宏载入时产生此事件。
语法
Private Sub Workbook_AddinInstall()
示例:AddinInstall 事件示例
本示例当指定工作簿作为加载宏载入时将一个控件添加到标准工具栏中。
Private Sub Workbook_AddinInstall() With Application.Commandbars("Standard").Controls.Add .Caption = "The AddIn's menu item" .OnAction = "'ThisAddin.xls'!Amacro" End With End Sub
语法
Private Sub QueryTable_BeforeRefresh(Cancel As Boolean)
Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则该过程执行结束 之后不进行刷新。
示例:BeforeRefresh 事件示例
本示例在刷新查询表之前运行。
Private Sub QueryTable_BeforeRefresh(Cancel As Boolean) a = MsgBox("Refresh Now?", vbYesNoCancel) If a = vbNo Then Cancel = True MsgBox Cancel
示例:BeforeRightClick 事件示例
本示例为 B1:B10 单元格添加快捷菜单项。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _ Cancel As Boolean)
For Each icbc In Application.CommandBars("cell").Controls If icbc.Tag = "brccm" Then icbc.Delete
End Sub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新 的类模块,并与事件一起声明 Chart 类型的对象。例如,假定创建了新的类模块 “EventClassModule”,该模块内应包含下述代码:
Public WithEvents myChartClass As Chart
End Sub
5、BeforeClose 事件 关闭工作簿时先产生此事件。如果该工作簿已经更改过,本事件在询问用户是否保存更改之 前产生。
语法
Private Sub Workbook_BeforeClose(Cancel As Boolean) Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则停止对工作簿的 关闭操作,工作薄仍处于打开状态。
Dim myClassModule As New EventClassModule Sub InitializeChart()
Set myClassModule.myChartClass = _ Worksheets(1).ChartObjects(1).Chart
End Sub
运行了“InitializeChart”过程之后,类模块中的 myChartClass 对象将指向第一张工作 表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
11、Calculate 事件
Chart 对象:在图表对新的数据点或者更改的数据点绘制之后产生此事件。
Worksheet 对象:在对工作表进行重新计算之后产生此事件。
语法
Private Sub object_Calculate()
object Chart 对象或 Worksheet 对象。有关对 Chart 对象使用事件的详细内容,请参 阅嵌入式图表事件的用法。
二、Excel 事件(A-E)
1、Activate 事件
激活一个工作簿、工作表、图表或嵌入式图表时产生此事件。
语法
Private Sub object_Activate()
object Chart、Workbook、或者 Worksheet。有关使用 Chart 对象的事件的详细内容, 请参阅(1)嵌入式图表事件的用法。
与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就 可为该对象编写事件处理过程了。(在“对象”下拉列表框内选定该对象后,“过程”下拉列表 框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在 任意的模块中用下述代码完成这一操作。
语法
Private Sub Workbook_BeforePrint(Cancel As Boolean) Cancel 当事件产生时为 False。如果该事件过程将本参数设为 True,则当该过程运行结 束之后不打印工作簿。
示例:BeforePrint 事件示例
本示例在打印之前对活动工作簿的所有工作表重新计算。