Excel VBA解读(81):工作表事件示例

微信公众号:excelperfect

 

本文再列举一些示例,以加深对工作表事件的理解,方便应用。

 

示例1:阻止用户修改指定单元格区域的数据

当用户修改工作表中指定单元格区域的数据时,给出提示信息并改回为原数据。

代码如下:

Dim data

 

Private Sub Worksheet_Change(ByValTarget As Range)

   If Not Intersect(Target, Range("A1:C3")) Is Nothing Then

        MsgBox "该区域数据重要,请不要修改!"

        Application.EnableEvents = False

        Target.Value = http://www.gunmi.cn/v/data

        Application.EnableEvents = True

   End If

End Sub

 

Private Sub Worksheet_SelectionChange(ByValTarget As Range)

       data = http://www.gunmi.cn/v/Target.Value

End Sub

运行效果如图1所示。

Excel VBA解读(81):工作表事件示例

 图1

 

示例2:让不同的工作表有不同的快捷菜单

在工作表“完美Excel”中,单击右键会出现属于该工作表的快捷菜单,同样,在工作表“Data”中单击右键也会出现属于该工作表的快捷菜单。如下图2所示。

Excel VBA解读(81):工作表事件示例

 图2

 

实现上述效果的代码如下。

 

在“完美Excel”工作表代码模块的BeforeRightClick事件中,输入下面的代码:

Private SubWorksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

   Dim cmb_excelperfect As CommandBar

   Set cmb_excelperfect = CreateSubMenu("完美Excel")

 

   Cancel = True

   cmb_excelperfect.ShowPopup

End Sub

 

在“Data”工作表代码模块的BeforeRightClick事件中,输入相似的代码:

Private SubWorksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

   Dim cmb_data As CommandBar

   Set cmb_data = http://www.gunmi.cn/v/CreateSubMenu("数据处理")

 

   Cancel = True

   cmb_data.ShowPopup

End Sub

 

插入一个标准模块,并输入下面的代码:

Excel VBA解读(81):工作表事件示例

 

示例3:双击单元格时显示输入框

在双击工作表第1列中的单元格时,会显示下图3所示的自定义输入框。

Excel VBA解读(81):工作表事件示例
 图3

在其中输入相应的数据后,单击“输入”即将数据输入到双击的单元格所在行的第1至3列所在的单元格。如图4所示。

Excel VBA解读(81):工作表事件示例

 图4

 

实现上述效果的代码如下。

 

插入一个标准模块,并声明一个全局变量。

Global lngRow As Long

创建一个如图3所示的用户窗体,窗体名及相应的控件名如图3所示。代码如下:

Private Sub cmdEntry_Click()

   Cells(lngRow, 1).Value = http://www.gunmi.cn/v/txtXM

   Cells(lngRow, 2).Value = http://www.gunmi.cn/v/txtXB

   Cells(lngRow, 3).Value = http://www.gunmi.cn/v/txtCJ

End Sub

在工作表代码模块中,输入下面的代码:

Private SubWorksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

   If Target.Column = 1 Then

        Cancel = True

        lngRow = Target.Row

        ufmTest.Show

   End If

End Sub

 

示例4:根据比较结果自动显示上升或下降的箭头

这是Bill Jelen提供的一个例子。如图5所示,比较两年同一个月份的利润。若利润上升,将在月份下面显示向上的红色箭头,如果利润下降,则在月份下面显示向下的绿色箭头。

Excel VBA解读(81):工作表事件示例
 图5

 

使用了工作表的Calculate事件,代码如下:

Excel VBA解读(81):工作表事件示例

 

在我们前面的文章中,也介绍过一些工作表事件的示例,你可以参照学习理解。

 

工作表事件为Excel自动化打开了一扇明亮的窗,有很多有用的应用,以后的文章中会穿插讲解。

你有什么好的工作表事件应用实例吗?欢迎分享。

 

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

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

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

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

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

Excel VBA解读(81):工作表事件示例

别忘了,留言、点赞、点击每篇文章底部的广告,也是给我的支持和鼓励哟!Excel VBA解读(81):工作表事件示例