Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工
微信公众号:excelperfect
我们可以设置在工作表上进行操作时,工作表要做的事情,例如激活某工作表时弹出一个对话框、在单元格之间移动时高亮显示单元格所在的行列,等等。
这就要用到Worksheet对象的事件。
Worksheet对象的事件并不多,共9个,如图1所示。
图1
其中,各个事件发生条件为:
Activate事件发生在工作表成为当前活动工作表时
BeforeDoubleClick事件发生在工作表单元格中双击时发生且在默认的双击操作之前
BeforeRightClick事件发生在工作表单元格中右击时发生且在默认的右击操作之前
Calculate事件发生在重新计算工作表后
Change事件发生在工作表单元格被修改后
Deactivate事件发生在转移到并使其他工作表为活动工作表前
FollowHyperlink事件发生在单击工作表中的超链接时
PivotTableUpdate事件发生在更新工作表中数据透视表后
SelectionChange事件发生在改变工作表单元格选择时
下面分别详细介绍这些事件。
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 = "http://www.gunmi.cn/v/完美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 =http://www.gunmi.cn/v/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
本文为原创文章,转载请注明出处。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎关注[完美Excel]微信公众号:
方法1—在微信“添加朋友”或者通讯录中搜索“完美Excel”或者“excelperfect”后点击关注。
方法2—扫一扫下面的二维码
别忘了,留言、点赞、点击每篇文章底部的广告,也是给我的支持和鼓励哟!
- 深入解读 | 大立光股价溜滑梯之谜!1个月重挫28%、市值蒸发上千
- 2018年北京小客车指标政策做了什么调整? 详细解读
- 【经典执行案例解读八】拍卖被执行人房产的执行案例
- 解读幸福密码,你感受到幸福了吗
- 12.13黄金市场加息行情将至,多头能否翻身近期行情解读
- 哈尔滨市(节能环保PPP)节能环保角度解读PPP政策、探究PPP实操
- 财政部解读PPP咨询机构库管理暂行办法
- 《55节课成为80种重疾条款的解读高手——进行性核上性麻痹和破裂
- 律师解读《新婚姻法》 全职太太最危机!如何保证自己的权益?
- 什么是现代化经济体系?下午三点,听权威专家解读