EXCEL-VBA-事件示例说明

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

二、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:=xlAscendingEndSub(1)嵌入式图表事件的用法默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新的类模块,并与事件一起声明Chart类型的对象。例如,假定创建了新的类模块“EventClassModule”,该模块内应包含下述代码:PublicWithEventsmyChartClassAsChart与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就可为该对象编写事件处理过程了。(在“对象”下拉列表框内选定该对象后,“过程”下拉列表框内将列出该对象的有效事件)。在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在任意的模块中用下述代码完成这一操作。DimmyClassModuleAsNewEventClassModuleSubInitializeChart()SetmyClassModule.myChartClass=_Worksheets(1).ChartObjects(1).ChartEndSub运行了“InitializeChart”过程之后,类模块中的myChartClass对象将指向第一张工作表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。2、AddinInstall事件当工作簿作为加载宏载入时产生此事件。语法PrivateSubWorkbook_AddinInstall()示例:AddinInstall事件示例本示例当指定工作簿作为加载宏载入时将一个控件添加到标准工具栏中。PrivateSubWorkbook_AddinInstall()WithApplication.Commandbars(Standard).Controls.Add.Caption=TheAddIn'smenuitem.OnAction='ThisAddin.xls'!AmacroEndWithEndSubEndSub3、AddinUninstall事件当工作簿作为加载宏卸载时产生此事件。语法PrivateSubWorkbook_AddinUninstall()说明卸载加载宏并不同时关闭该加载宏。示例:AddinUninstall事件示例本示例当指定工作簿作为加载宏卸载时将MicrosoftExcel最小化。PrivateSubWorkbook_AddinUninstall()Application.WindowState=xlMinimizedEndSub4、AfterRefresh事件当一个查询完成或者取消时产生此事件。语法PrivateSubQueryTable_AfterRefresh(SuccessAsBoolean)Success如果查询成功完成则为True。示例:AfterRefresh事件示例本示例使用Success参数判断查询是否成功完成。PrivateSubQueryTable_AfterRefresh(SuccessAsBoolean)IfSuccess'QuerycompletedsuccessfullyElse'QueryfailedorwascancelledEndIfEndSub5、BeforeClose事件关闭工作簿时先产生此事件。如果该工作簿已经更改过,本事件在询问用户是否保存更改之前产生。语法PrivateSubWorkbook_BeforeClose(CancelAsBoolean)Cancel当事件产生时为False。如果该事件过程将本参数设为True,则停止对工作簿的关闭操作,工作薄仍处于打开状态。示例:BeforeClose事件示例本示例将BeforeClose事件的响应设置为保存工作簿的任何更改。PrivateSubWorkbook_BeforeClose(CancelasBoolean)IfMe.Saved=FalseThenMe.SaveEndSub6、BeforeDoubleClick事件(缺)7、BeforePrint事件在打印指定工作簿(或者其中的某些内容)之前产生此事件。语法PrivateSubWorkbook_BeforePrint(CancelAsBoolean)Cancel当事件产生时为False。如果该事件过程将本参数设为True,则当该过程运行结束之后不打印工作簿。示例:BeforePrint事件示例本示例在打印之前对活动工作簿的所有工作表重新计算。PrivateSubWorkbook_BeforePrint(CancelAsBoolean)ForEachwkinWorksheetswk.CalculateNextEndSub8、BeforeRefresh事件在刷新查询表之前产生此事件。这里的刷新包括调用Refresh方法引起的变化,用户的操作引起的变化和打开包含该查询表的工作簿引起的变化。语法PrivateSubQueryTable_BeforeRefresh(CancelAsBoolean)Cancel当事件产生时为False。如果该事件过程将本参数设为True,则该过程执行结束之后不进行刷新。示例:BeforeRefresh事件示例本示例在刷新查询表之前运行。PrivateSubQueryTable_BeforeRefresh(CancelAsBoolean)a=MsgBox(RefreshNow?,vbYesNoCancel)Ifa=vbNoThenCancel=TrueMsgBoxCancelEndSub9、BeforeRightClick事件当右击一个嵌入式图表或工作表时产生此事件,此事件的产生先于默认的右击操作。语法1PrivateSubobject_BeforeRightClick(CancelAsBoolean)语法2PrivateSubWorksheet_BeforeRightClick(ByValTargetAsRange,CancelAsBoolean)object在类模块中带有事件声明的Chart类型对象。有关详细内容,请参阅嵌入式图表事件的用法。Target右击发生时最靠近鼠标指针的单元格。Cancel当事件产生时为False。如果该事件过程将本参数设为True,则该过程执行结束之后不进行默认的右击操作。说明与其他工作表事件相似,当指针位置在形状或命令栏(工具栏或者菜单栏)上时,右击不触发本事件。示例:BeforeRightClick事件示例本示例为B1:B10单元格添加快捷菜单项。PrivateSubWorksheet_BeforeRightClick(ByValTargetAsRange,_CancelAsBoolean)ForEachicbcInApplication.CommandBars(cell).ControlsIficbc.Tag=brccmThenicbc.DeleteNexticbcIfNotApplication.Intersect(Target,Range(b1:b10))_IsNothingThenWithApplication.CommandBars(cell).Controls_.Add(Type:=msoControlButton,before:=6,_temporary:=True).Caption=NewContextMenuItem.OnAction=MyMacro.Tag=brccmEndWithEndIfEndSub(1)嵌入式图表事件的用法默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新的类模块,并与事件一起声明Chart类型的对象。例如,假定创建了新的类模块“EventClassModule”,该模块内应包含下述代码:PublicWithEventsmyChartClassAsChart与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就可为该对象编写事件处理过程了。(在“对象”下拉列表框内选定该对象后,“过程”下拉列表框内将列出该对象的有效事件)。在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在任意的模块中用下述代码完成这一操作。DimmyClassModuleAsNewEventClassModuleSubInitializeChart()SetmyClassModule.myChartClass=_Worksheets(1).ChartObjects(1).ChartEndSub运行了“InitializeChart”过程之后,类模块中的myChartClass对象将指向第一张工作表上的第一个嵌入式图表,并且当事件产生时,将触发类模块中的事件处理过程。10、BeforeSave事件保存工作簿之前产生此事件。语法PrivateSubWorkbook_BeforeSave(ByValSaveAsUiAsBoolean,CancelAsBoolean)SaveAsUi如果显示“另存为”对话框则为True。Cancel当事件产生时为False。如果该事件过程将本参数设为True,则该过程执行结束之后不保存工作簿。示例:BeforeSave事件示例本示例在保存工作簿之前询问用户是否保存。PrivateSubWorkbook_BeforeSave(ByValSaveAsUIAsBoolean,_CancelasBoolean)a=MsgBox(Doyoureallywanttosavetheworkbook?,vbYesNo)Ifa=vbNoThenCancel=TrueEndSub11、Calculate事件Chart对象:在图表对新的数据点或者更改的数据点绘制之后产生此事件。Worksheet对象:在对工作表进行重新计算之后产生此事件。语法PrivateSubobject_Calculate()objectChart对象或Worksheet对象。有关对Chart对象使用事件的详细内容,请参阅嵌入式图表事件的用法。示例:Calculate事件示例本示例每当工作表重新计算时就对A列到F列的宽度进行调整。PrivateSubWorksheet_Calculate()Columns(A:F).AutoFitEndSub(1)嵌入式图表事件的用法默认情况下,图表工作表的事件都是可用的。但在使用嵌入式图表的事件之前,必须创建新的类模块,并与事件一起声明Chart类型的对象。例如,假定创建了新的类模块“EventClassModule”,该模块内应包含下述代码:PublicWithEventsmyChartClassAsChart与事件一起声明了新的对象之后,该对象将出现在类模块的“Object”下拉列表框内;此时就可为该对象编写事件处理过程了。(在“对象”下拉列表框内选定该对象后,“过程”下拉列表框内将列出该对象的有效事件)。在事件处理过程运行之前,必须将类模块中声明的对象与相应的嵌入式图表连接起来。可在任意的模块中用下述代码完成这一操作。DimmyClassModuleAsNewEventClassModuleSubInitializeChart()SetmyClassModule.myChartClass=_Works

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功