Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工

微信公众号:excelperfect

 

我们可以设置在工作表上进行操作时,工作表要做的事情,例如激活某工作表时弹出一个对话框、在单元格之间移动时高亮显示单元格所在的行列,等等。

 

这就要用到Worksheet对象的事件。

 

Worksheet对象的事件并不多,共9个,如图1所示。

Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工

 图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所示。

    Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工

     图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所示。

    Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工

     图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所示。

    Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工
     图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所示。

    Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工

     图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所示。

    Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工

     图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所示。

    Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工

     图7

     

    本文为原创文章,转载请注明出处。

    欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    欢迎关注[完美Excel]微信公众号:

    方法1—在微信“添加朋友”或者通讯录中搜索“完美Excel”或者“excelperfect”后点击关注。

    方法2—扫一扫下面的二维码

    Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工

    别忘了,留言、点赞、点击每篇文章底部的广告,也是给我的支持和鼓励哟!Excel VBA解读(80):看看工作表会自动响应哪些操作——认识工