W orksheet 对象事件一览表工作表上的事件在默认情况下是可用的。
若要查看工作表的事件过程,请用鼠标右键单击工作表标签,再单击快捷菜单上的“查看代码”。
在“过程”下拉列表框内选择事件名称。
工作表级事件发生在工作表被激活、用户更改工作表上的单元格或数据透视表更改时。
下例在工作表重新计算时就调整 A 列到 F 列的大小。
Private Sub Worksheet_Calculate()Columns("A:F").AutoFitEnd Sub有些事件可用于将某操作取代默认的应用程序操作,或对默认操作进行一些小改动。
下例捕获了右键单击事件,并在单元格区域 B1:B10 的快捷菜单中添加了新的菜单项。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _Cancel As Boolean)For Each icbc In mandBars("cell").ControlsIf icbc.Tag = "brccm" Then icbc.DeleteNext icbcIf Not Application.Intersect(Target, Range("b1:b10")) _Is Nothing ThenWith mandBars("cell").Controls _.Add(Type:=msoControlButton, before:=6, _temporary:=True).Caption = "New Context Menu Item".OnAction = "MyMacro".Tag = "brccm"End WithEnd IfActivate 事件激活一个工作簿、工作表、图表或嵌入图表时产生此事件。
Private Sub object_Activate()object Chart、Workbook、或者Worksheet。
有关对Chart对象使用事件的详细信息,请参阅图表对象事件的用法。
说明切换两个显示同一个工作簿的窗口时,将产生 WindowActivate 事件,但不产生工作簿的 Activate 事件。
新建窗口时不产生本事件。
示例当激活工作表时,本示例对 A1:A10 区域进行排序。
Private Sub Worksheet_Activate()Range("a1:a10").Sort Key1:=Range("a1"), Order:=xlAscendingEnd SubDeactivate 事件图表、工作表或工作簿从活动状态转为非活动状态时产生此事件。
Private Sub object_Deactivate()object Chart、Workbook或者Worksheet。
有关对Chart对象使用事件的详细信息,请参阅Chart 对象事件的用法。
示例本示例当工作簿转为非活动状态时,对所有打开的窗口进行排列。
Private Sub Workbook_Deactivate()Application.Windows.Arrange xlArrangeStyleTiledEnd SubBeforeDoubleClick 事件当双击某工作表时产生此事件,此事件先于默认的双击操作。
Private Sub expression_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)expression 引用在类模块中带有事件声明的Worksheet类型对象的变量。
Target 必需。
双击发生时最靠近鼠标指针的单元格。
Cancel 可选。
当事件发生时为False。
如果事件过程将该参数设为True,则该过程执行完之后将不进行默认的双击操作。
说明使用DoubleClick方法并不触发本事件。
用户双击单元格的边框时不触发本事件。
BeforeRightClick 事件当用鼠标右键单击某工作表时产生此事件,此事件先于默认的右键单击操作。
Private Sub expression_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)expression 引用在类模块中带有事件声明的Worksheet类型对象的变量。
Target必需。
右键单击发生时最靠近鼠标指针的单元格。
Cancel 可选。
当事件发生时为False。
如果该事件过程将本参数设为True,则该过程执行结束之后不进行默认的右键单击操作。
说明与其他工作表事件相似,当指针位置在图形或命令栏(工具栏或者菜单栏)上时,右键单击不触发本事件。
示例应用于Worksheet对象。
本示例为 B1:B10 单元格添加新的快捷菜单项。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _Cancel As Boolean)Dim icbc As ObjectFor Each icbc In mandBars("cell").ControlsIf icbc.Tag = "brccm" Then icbc.DeleteNext icbcIf Not Application.Intersect(Target, Range("b1:b10")) _Is Nothing ThenWith mandBars("cell").Controls _.Add(Type:=msoControlButton, before:=6, _temporary:=True).Caption = "New Context Menu Item".OnAction = "MyMacro".Tag = "brccm"End WithEnd IfEnd SubCalculate 事件对于Chart对象,在图表对新的数据点或者更改的数据点绘制之后产生此事件。
对于Worksheet对象,在对工作表进行重新计算之后产生此事件。
Private Sub object_Calculate()object Chart或者Worksheet。
有关对Chart对象使用事件的详细内容,请参阅Chart 对象事件的用法。
示例每当工作表重新计算时,本示例就调整 A 列到 F 列的宽度。
Private Sub Worksheet_Calculate()Columns("A:F").AutoFitChange 事件当用户更改工作表中的单元格,或外部链接引起单元格的更改时产生此事件。
Private Sub Worksheet_Change(ByVal Target As Range)Target 更改的区域。
可以是多个单元格。
说明重新计算引起的单元格更改不触发本事件。
可使用 Calculate 事件俘获工作表重新计算操作。
示例本示例将更改的单元格的颜色设为蓝色。
Private Sub Worksheet_Change(ByVal Target as Range)Target.Font.ColorIndex = 5End SubFollowHyperlink 事件当单击工作表上的任意超链接时,发生此事件。
对于应用程序级或工作簿级的事件,请参阅SheetFollowHyperlink事件。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)Target Hyperlink类型,必需。
一个代表超链接目标位置的Hyperlink对象。
示例本示例对在当前活动工作簿中访问过的所有链接保留一个列表或历史记录。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)With UserForm1.ListBox1.AddItem Target.Address.ShowPivotTableUpdate 事件发生在工作簿中的数据透视表更新之后。
Private Sub expression_PivotTableUpdate(ByVal Target As PivotTable)expression 引用在类模块中带有事件声明的Worksheet类型对象的变量。
Target必需。
选定的数据透视表。
示例本示例显示一则消息,说明数据透视表已经更新。
本示例假定您已在类模块中声明了带有事件的Worksheet类型的对象。
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) MsgBox "The PivotTable connection has been updated."End SubSelectionChange 事件当工作表上的选定区域发生改变时,将产生本事件。
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Target 新选定的区域。
示例本示例滚动工作簿窗口,直至选定区域位于窗口的左上角。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)With ActiveWindow.ScrollRow = Target.Row.ScrollColumn = Target.Column。