我们可以设置在工作表上进行操作时,工作表要做的事情,例如激活某工作表时弹出一个对话框、在单元格之间移动时高亮显示单元格所在的行列,等等。
这就要用到Worksheet对象的事件。
Worksheet对象的事件并不多,共9个,如图1所示。 图1
其中,各个事件发生条件为:
下面分别详细介绍这些事件。
Activate事件 Worksheet_Activate() 在工作表成为活动工作表时触发该事件。
Deactivate事件 Worksheet_Deactivate() 当转移到其他工作表时触发该事件。
示例1:激活当前工作表与转移到其他工作表时的事件响应 以工作表Sheet2为例,当激活使工作表Sheet2成为活动工作表时,以及转移到其他工作表时,分别显示相应的消息框。 Private Sub Worksheet_Activate() MsgBox 'Hi!欢迎来到【完美Excel】.', , 'excelperfect' End Sub
Private Sub Worksheet_Deactivate() MsgBox '谢谢你的来访!', , '完美Excel' End Sub 代码效果如图2所示。 图2
BeforeDoubleClick事件 Worksheet_BeforeDoubleClick(ByValTarget As Range, Cancel As Boolean) 当双击工作表单元格时触发该事件。 参数Target代表工作表中所选取的单元格或单元格区域。 参数Cancel设置是否允许默认的操作,缺省值为False。若设置为True,则不允许按照双击单元格方式来输入数据。
示例2:双击单元格自动添加背景色 在用户双击工作表单元格区域A1:C3中的任意单元格时,会自动为该单元格添加红色作为背景色。代码如下: Private Sub Worksheet_BeforeDoubleClick(ByValTarget As Range, Cancel As Boolean) If Not Intersect(Target, Range('A1:C3')) Is Nothing Then Cancel = True Target.Interior.Color = vbRed End If End Sub 代码效果如图3所示。 图3
BeforeRightClick事件 Worksheet_BeforeRightClick(ByValTarget As Range, Cancel As Boolean) 在单元格或单元格区域中单击右键时触发该事件。 参数Target代表工作表中所选取的单元格或单元格区域。 参数Cancel设置是否允许默认的操作,缺省值为False。若设置为True,则不显示默认的快捷菜单。
示例3:阻止显示缺省的快捷菜单 当工作表单元格中的数据为“”时,选择该单元格后单击右键,不会出现缺省的快捷菜单。代码如下: Private SubWorksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.Value = '完美Excel' Then Cancel = True End If End Sub 代码效果如图4所示。 图4
Calculate事件 Worksheet_Calculate() 当工作表被重新计算时触发该事件。
示例4:根据计算结果输入数值并设置格式 下面的代码演示当工作表单元格B2中的数值大于B3中的数值时,在B4中显示两个值的差并设置该单元格的背景色为红色。 Private Sub Worksheet_Calculate() If Range('B2').Value > Range('B3') Then Range('B4').Value =Range('B2').Value - Range('B3') Range('B4').Interior.Color =vbRed Else Range('B4').Clear End If End Sub 运行效果如图5所示。 图5
Change事件 Worksheet_Change(ByValTarget As Range) 当修改单元格中的数据时触发该事件。 参数Target代表工作表中所选取的单元格或单元格区域。
示例5:提示用户不要修改数据 下面的代码在用户修改工作表单元格区域A1:C3中的数据时,给出提示信息。 Private Sub Worksheet_Change(ByValTarget As Range) If Not Intersect(Target, Range('A1:C3')) Is Nothing Then MsgBox '该区域数据重要,请不要修改!' End If End Sub 运行效果如图6所示。 图6
FollowHyperlink事件 Worksheet_FollowHyperlink(ByValTarget As Hyperlink) 当单击含有超链接的单元格时触发该事件。
PivotTableUpdate事件 Worksheet_PivotTableUpdate(ByValTarget As PivotTable) 当更新数据透视表时触发该事件。
SelectionChange事件 Worksheet_SelectionChange(ByValTarget As Range) 当工作表中选择的单元格改变时触发该事件。 参数Target代表工作表中所选取的单元格或单元格区域。
示例6:高亮显示单元格所在的行列 下面的代码高亮显示工作表单元格所在的行列: Private SubWorksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = xlNone With Target .EntireRow.Interior.Color = vbRed .EntireColumn.Interior.Color = vbRed End With End Sub 运行效果如图7所示。 图7 本文为原创文章,转载请注明出处。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。 |
|
来自: zhangshoupen > 《我的微表》