EXCEL VBA 事件示例说明.docx
- 文档编号:15126737
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:42
- 大小:31.21KB
EXCEL VBA 事件示例说明.docx
《EXCEL VBA 事件示例说明.docx》由会员分享,可在线阅读,更多相关《EXCEL VBA 事件示例说明.docx(42页珍藏版)》请在冰点文库上搜索。
EXCELVBA事件示例说明
二、Excel事件(A-E)
1、Activate事件
激活一个工作簿、工作表、图表或嵌入式图表时产生此事件。
语法
PrivateSubobject_Activate()
objectChart、Workbook、或者Worksheet。
有关使用Chart对象的事件的详细内容,
请参阅
(1)嵌入式图表事件的用法。
说明
切换两个显示同一工作簿的窗口时,将产生WindowActivate事件,但不产生工作簿的
Activate事件。
新建窗口时不产生本事件。
示例:
Activate事件示例
本示例当激活工作表时对A1:
A10区域进行排序。
PrivateSubWorksheet_Activate()
Range("a1:
a10").SortKey1:
=Range("a1"),Order:
=xlAscending
EndSub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。
但在使用嵌入式图表的事件之前,必须创建新
的类模块,并与事件一起声明Chart类型的对象。
例如,假定创建了新的类模块
“EventClassModule”,该模块内应包含下述代码:
PublicWithEventsmyChartClassAsChart
与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就
可为该对象编写事件处理过程了。
(在“对象”下拉列表框内选定该对象后,“过程”下拉列表
框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。
可在
任意的模块中用下述代码完成这一操作。
DimmyClassModuleAsNewEventClassModule
SubInitializeChart()
SetmyClassModule.myChartClass=_
Worksheets
(1).ChartObjects
(1).Chart
EndSub
运行了“InitializeChart”过程之后,类模块中的myChartClass对象将指向第
一张工作表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件
处理过程。
2、AddinInstall事件
当工作簿作为加载宏载入时产生此事件。
语法
PrivateSubWorkbook_AddinInstall()
示例:
AddinInstall事件示例
本示例当指定工作簿作为加载宏载入时将一个控件添加到标准工具栏中。
PrivateSubWorkbook_AddinInstall()
WithApplication.Commandbars("Standard").Controls.Add
.Caption="TheAddIn'smenuitem"
.OnAction="'ThisAddin.xls'!
Amacro"
EndWithEndSub
EndSub
3、AddinUninstall事件
当工作簿作为加载宏卸载时产生此事件。
语法
PrivateSubWorkbook_AddinUninstall()
说明
卸载加载宏并不同时关闭该加载宏。
示例:
AddinUninstall事件示例
本示例当指定工作簿作为加载宏卸载时将MicrosoftExcel最小化。
PrivateSubWorkbook_AddinUninstall()
Application.WindowState=xlMinimized
EndSub
4、AfterRefresh事件
当一个查询完成或者取消时产生此事件。
语法
PrivateSubQueryTable_AfterRefresh(SuccessAsBoolean)
Success如果查询成功完成则为True。
示例:
AfterRefresh事件示例
本示例使用Success参数判断查询是否成功完成。
PrivateSubQueryTable_AfterRefresh(SuccessAsBoolean)
IfSuccess
'QuerycompletedsuccessfullyElse
'QueryfailedorwascancelledEndIf
EndSub
5、BeforeClose事件
关闭工作簿时先产生此事件。
如果该工作簿已经更改过,本事件在询问用户是否保存更改之
前产生。
语法
PrivateSubWorkbook_BeforeClose(CancelAsBoolean)
Cancel当事件产生时为False。
如果该事件过程将本参数设为True,则停止对工作簿的
关闭操作,工作薄仍处于打开状态。
示例:
BeforeClose事件示例
本示例将BeforeClose事件的响应设置为保存工作簿的任何更改。
PrivateSubWorkbook_BeforeClose(CancelasBoolean)
IfMe.Saved=FalseThenMe.Save
EndSub
6、BeforeDoubleClick事件(缺)
7、BeforePrint事件
在打印指定工作簿(或者其中的某些内容)之前产生此事件。
语法
PrivateSubWorkbook_BeforePrint(CancelAsBoolean)
Cancel当事件产生时为False。
如果该事件过程将本参数设为True,则当该过程运行结
束之后不打印工作簿。
示例:
BeforePrint事件示例
本示例在打印之前对活动工作簿的所有工作表重新计算。
PrivateSubWorkbook_BeforePrint(CancelAsBoolean)
ForEachwkinWorksheets
wk.Calculate
Next
EndSub
8、BeforeRefresh事件
在刷新查询表之前产生此事件。
这里的刷新包括调用Refresh方法引起的变化,用户的操
作引起的变化和打开包含该查询表的工作簿引起的变化。
语法
PrivateSubQueryTable_BeforeRefresh(CancelAsBoolean)
Cancel当事件产生时为False。
如果该事件过程将本参数设为True,则该过程执行结束
之后不进行刷新。
示例:
BeforeRefresh事件示例
本示例在刷新查询表之前运行。
PrivateSubQueryTable_BeforeRefresh(CancelAsBoolean)
a=MsgBox("RefreshNow?
",vbYesNoCancel)
Ifa=vbNoThenCancel=True
MsgBoxCancel
EndSub
9、BeforeRightClick事件
当右击一个嵌入式图表或工作表时产生此事件,此事件的产生先于默认的右击操作。
语法1
PrivateSubobject_BeforeRightClick(CancelAsBoolean)
语法2
PrivateSubWorksheet_BeforeRightClick(ByValTargetAsRange,CancelAs
Boolean)
object在类模块中带有事件声明的Chart类型对象。
有关详细内容,请参阅嵌入式图表
事件的用法。
Target右击发生时最靠近鼠标指针的单元格。
Cancel当事件产生时为False。
如果该事件过程将本参数设为True,则该过程执行结束
之后不进行默认的右击操作。
说明
与其他工作表事件相似,当指针位置在形状或命令栏(工具栏或者菜单栏)上时,右击不触
发本事件。
示例:
BeforeRightClick事件示例
本示例为B1:
B10单元格添加快捷菜单项。
PrivateSubWorksheet_BeforeRightClick(ByValTargetAsRange,_
CancelAsBoolean)
ForEachicbcInApplication.CommandBars("cell").Controls
Ificbc.Tag="brccm"Thenicbc.Delete
Nexticbc
IfNotApplication.Intersect(Target,Range("b1:
b10"))_
IsNothingThen
WithApplication.CommandBars("cell").Controls_
.Add(Type:
=msoControlButton,before:
=6,_
temporary:
=True)
.Caption="NewContextMenuItem"
.OnAction="MyMacro"
.Tag="brccm"EndWith
EndIfEndSub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。
但在使用嵌入式图表的事件之前,必须创建新
的类模块,并与事件一起声明Chart类型的对象。
例如,假定创建了新的类模块
“EventClassModule”,该模块内应包含下述代码:
PublicWithEventsmyChartClassAsChart
与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就
可为该对象编写事件处理过程了。
(在“对象”下拉列表框内选定该对象后,“过程”下拉列表
框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。
可在
任意的模块中用下述代码完成这一操作。
DimmyClassModuleAsNewEventClassModule
SubInitializeChart()
SetmyClassModule.myChartClass=_
Worksheets
(1).ChartObjects
(1).Chart
EndSub
运行了“InitializeChart”过程之后,类模块中的myChartClass对象将指向第一张工作
表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
10、BeforeSave事件
保存工作簿之前产生此事件。
语法
PrivateSubWorkbook_BeforeSave(ByValSaveAsUiAsBoolean,CancelAs
Boolean)
SaveAsUi如果显示“另存为”对话框则为True。
Cancel当事件产生时为False。
如果该事件过程将本参数设为True,则该过程执行结束
之后不保存工作簿。
示例:
BeforeSave事件示例
本示例在保存工作簿之前询问用户是否保存。
PrivateSubWorkbook_BeforeSave(ByValSaveAsUIAsBoolean,_
CancelasBoolean)
a=MsgBox("Doyoureallywanttosavetheworkbook?
",vbYesNo)
Ifa=vbNoThenCancel=True
EndSub
11、Calculate事件
Chart对象:
在图表对新的数据点或者更改的数据点绘制之后产生此事件。
Worksheet对象:
在对工作表进行重新计算之后产生此事件。
语法
PrivateSubobject_Calculate()
objectChart对象或Worksheet对象。
有关对Chart对象使用事件的详细内容,请参
阅嵌入式图表事件的用法。
示例:
Calculate事件示例
本示例每当工作表重新计算时就对A列到F列的宽度进行调整。
PrivateSubWorksheet_Calculate()
Columns("A:
F").AutoFit
EndSub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。
但在使用嵌入式图表的事件之前,必须创建新
的类模块,并与事件一起声明Chart类型的对象。
例如,假定创建了新的类模块
“EventClassModule”,该模块内应包含下述代码:
PublicWithEventsmyChartClassAsChart
与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就
可为该对象编写事件处理过程了。
(在“对象”下拉列表框内选定该对象后,“过程”下拉列表
框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。
可在
任意的模块中用下述代码完成这一操作。
DimmyClassModuleAsNewEventClassModule
SubInitializeChart()
SetmyClassModule.myChartClass=_
Worksheets
(1).ChartObjects
(1).Chart
EndSub
运行了“InitializeChart”过程之后,类模块中的myChartClass对象将指向第一张工作表上的
第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
12、Change事件
当用户更改工作表中的单元格,或外部链接引起单元格的更改时产生此事件。
语法
PrivateSubWorksheet_Change(ByValTargetAsRange)
Target更改的区域。
可为多个单元格。
说明
重新计算引起的单元格更改不触发本事件。
可使用Calculate事件俘获工作表重新计算操
作。
删除单元格并不触发此事件。
示例:
Change事件示例
本示例将更改的单元格的颜色设为蓝色。
PrivateSubWorksheet_Change(ByValTargetasRange)
Target.Font.ColorIndex=5
EndSub
13、Deactivate事件
图表、工作表或工作簿从活动状态转为非活动状态时产生此事件。
语法
PrivateSubobject_Deactivate()
objectChart对象、Workbook对象或Worksheet对象。
有关对Chart对象使用事
件的详细内容,请参阅嵌入式图表事件的用法。
示例:
Deactivate事件示例
本示例当工作簿转为非活动状态时对所有打开的窗口进行排列。
PrivateSubWorkbook_Deactivate()
Application.Windows.ArrangexlArrangeStyleTiled
EndSub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。
但在使用嵌入式图表的事件之前,必须创建新
的类模块,并与事件一起声明Chart类型的对象。
例如,假定创建了新的类模块
“EventClassModule”,该模块内应包含下述代码:
PublicWithEventsmyChartClassAsChart
与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就
可为该对象编写事件处理过程了。
(在“对象”下拉列表框内选定该对象后,“过程”下拉列表
框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。
可在
任意的模块中用下述代码完成这一操作。
DimmyClassModuleAsNewEventClassModule
SubInitializeChart()
SetmyClassModule.myChartClass=_
Worksheets
(1).ChartObjects
(1).Chart
EndSub
运行了“InitializeChart”过程之后,类模块中的myChartClass对象将指向第一张工作表上的
第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
14、DragOver事件
当将一个单元格区域拖过图表时产生此事件。
语法
PrivateSubobject_DragOver()
object在类模块中带有事件声明的Chart类型对象。
有关详细内容,请参阅嵌入式图表
事件的用法。
示例:
DragOver事件示例
本示例显示拖过图表的单元格区域的地址。
PrivateSubChart_DragOver()
MsgBoxSelection.Address
EndSub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。
但在使用嵌入式图表的事件之前,必须创建新
的类模块,并与事件一起声明Chart类型的对象。
例如,假定创建了新的类模块
“EventClassModule”,该模块内应包含下述代码:
PublicWithEventsmyChartClassAsChart
与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就
可为该对象编写事件处理过程了。
(在“对象”下拉列表框内选定该对象后,“过程”下拉列表
框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。
可在
任意的模块中用下述代码完成这一操作。
DimmyClassModuleAsNewEventClassModule
SubInitializeChart()
SetmyClassModule.myChartClass=_
Worksheets
(1).ChartObjects
(1).Chart
EndSub
运行了“InitializeChart”过程之后,类模块中的myChartClass对象将指向第一张工作表上的
第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
15、DragPlot事件
将一个单元格区域拖放到图表上时产生此事件。
语法
PrivateSubobject_DragPlot()
object在类模块中带有事件声明的Chart类型对象。
有关详细内容,请参阅嵌入式图表
事件的用法。
示例:
DragPlot事件示例
本示例当将单元格区域拖放到图表上时更改该图表的类型。
PrivateSubChart_DragPlot()
Me.ChartType=xlLine
EndSub
(1)嵌入式图表事件的用法
默认情况下,图表工作表的事件都是可用的。
但在使用嵌入式图表的事件之前,必须创建新
的类模块,并与事件一起声明Chart类型的对象。
例如,假定创建了新的类模块
“EventClassModule”,该模块内应包含下述代码:
PublicWithEventsmyChartClassAsChart
与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时
就可为该对象编写事件处理过程了。
(在“对象”下拉列表框内选定该对象后,“过程”下
拉列表框内将列出该对象的有效事件)。
在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。
可在
任意的模块中用下述代码完成这一操作。
DimmyClassModuleAsNewEventClassModule
SubInitializeChart()
SetmyClassModule.myChartClass=_
Worksheets
(1).ChartObjects
(1).Chart
EndSub
运行了“InitializeChart”过程之后,类模块中的myChartClass对象将指向第一张工作
表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。
二、Excel事件(F-R)
1、FollowHyperlink事件
当鼠标单击工作表上的任意超级链接时将发生此事件。
对于应用程序或工作簿级的事件,请参阅SheetFollowHyperlink事件。
语法
PrivateSubWorksheet_FollowHyperlink(ByValTargetAsHyperlink)
Target必选。
Hyperlink类型。
一个代表超级链接目标位置的Hyperlink对象。
示例:
FollowHyperlink事件示例
本示例对在活动工作簿中访问过的所有链接保留一个列表或历史记录。
PrivateSubWorksheet_FollowHyperlink(ByValTargetAsHyperlink)
WithUserForm1
.ListBox1.AddItemTarget.Address.Show
EndWithEndSub
2、GotFocus事件
当ActiveX控件获得输入焦点时,产生本事件。
语法
PrivateSubobject_GotFocus()
objectActiveX控件的名称。
示例:
GotFocus事件示例
当“ListBox1”获得输入焦点时,将运行本示例。
PrivateSubListBox1_GotFocus()
'runswhenlistboxgetsthefocus
EndSub
3、LostFocus事件
当ActiveX控件失去输入焦点时,产生本事件。
语法
PrivateSubobject_LostFocus()
objectActiveX控件的名称。
示例:
LostFocus事件示例
当“ListBox1”失去输入焦点时,将运行本示例。
PrivateSubListBox1_LostFocus()
'runswhenlistboxlosesthefocus
EndSub
4、MouseDown事件
当在图表上按下鼠标键时产生此事件。
语法
PrivateSubobject_MouseDown(ByValButtonAsLong,ByValShiftAsLong,ByValX
AsLong,ByValYAsLong)
object在类模块中带有事件声明的Chart类型对象。
有关详细内容,请参阅嵌入式图表事件的用法。
Button按下的鼠标键。
可为下列XlMouseButton常量之一:
xlNoButton、
xlPrimaryButton、xlSecondaryButton或xlMiddleButton。
Shift此事件产生时SH
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EXCEL VBA 事件示例说明 事件 示例 说明
![提示](https://static.bingdoc.com/images/bang_tan.gif)