Excel 2010 VBA 入门 069 工作表事件之worksheet_selectionchange

示例    

如图所示,该表为某公司员工档案表。由于该表记录较多,为使该表的各个记录更容易区分,希望能够对当前选中的行添加不同的背景色设置。该如何用VBA完成?

 

序号姓名科室级别身份职称受聘专业参工时间工作年限入院时间入院年限职务
1张1张后勤科中级干部主治医师医生1970/9/1401970/7/140 
2李2李外妇科中级干部主治医师医生1991/8/1192008/10/12院长.书记
3江3江外妇科 工人 医生1993/9/1171999/1/112 
4陈4陈外妇科初级干部医士医生1999/10/1111999/10/111医务科长
5周5周外妇科 合同 医生2009/2/1322009/2/132 
6吴6吴外妇科中级干部主治医师医生1977/2/1341977/7/133副院长
7张7张外妇科中级干部主治医师医生1978/4/1331985/1/126 
8李8李外妇科初级干部护师护士1987/2/1241989/3/122 
9江9江外妇科 合同 护士2007/4/2642008/4/13 
10陈10陈外妇科 干部 护士2000/8/1101999/5/112 
11周11周外妇科初级干部护士护士2007/6/642007/6/14 
12吴12吴外妇科 干部 医生2006/3/152006/4/15 
13张13张外妇科 合同 医生2009/5/722009/5/72 
14李14李外妇科 合同 护士2009/9/912009/9/91 
15江15江手术室 干部 医生     
16陈16陈手术室 合同 医生2009/7/1112009/6/112 
17周17周手术室初级干部医师护士1981/12/1291981/12/129护士长
18吴18吴内儿科初级干部主治医师医生1988/8/1221988/7/122医务科副科长兼中医科科长
19张19张内儿科初级干部主治医师医生1997/10/1131997/10/113内科主任
20李20李内儿科 干部 医生2000/8/1102008/8/12 
21江21江内儿科初级干部护师护士1981/12/1292006/10/14 
22陈22陈内儿科初级干部护士护士2000/12/1102002/1/19 
23周23周内儿科 合同护士护士2007/11/1432007/11/13 

实现代码

    使用工作表的Selection_Change事件,当用户选择的单元格发生变化时,对所选中的单元格及其所在的行设置不同的背景色。

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal target As Range)
    '若选中的单元格数量为1,并用大于第一行
    If target.Count = 1 And target.Row > 1 Then
        '将第2行开始的所有单元格的填充色改为无色
        Rows("2:" & Rows.Count).Interior.Color = xlNone
        '改变当前先中单元格所在行的填充色为黄色
        target.EntireRow.Interior.Color = vbYellow
    End If
End Sub

事件的概念

    事件指的是当用户执行某个特定的操作后,即可触发某个事件程序并使其自动运行,其机制类似于生物学中的条件反射。比如,当用户单击Excel程序中[快速访问工具栏]中的“保存”按钮后,可以实现保存功能。而其实质是在用户单击该按钮后,Excel程序触发了该按钮的单击事件,并执行了其单击的事件程序,而在该程序中由于定义了与保存工作簿相关的程序,从而实现工作簿的保存,其过程可以参见图。事实上,Windows系统和Excel都是基于事件机制而设计的。

    事件程序是可以自动、反复地执行的。只需要满足事件程序触发的条件,事件程序就会执行,而无须用户或开发者特意使用特殊的方法去启动程序。事件是程序“自动”执行的基础,许多“自动”的功能都是依靠事件来完成的。

Worksheet的Selection_Change事件

    Selection_Change事件程序是Excel预定义的事件,其触发条件是当选中的单元格区域发生变化,即当选中的单元格区域发生变化时触发该事件程序的执行。本例中,首先需要为当前选中的单元格所在的行设置不同的填充色。而当用户选择不同行的单元格时,需要将之前的行设置为默认的填充色,并且将当前选中的行设置为不同的颜色。因而本例使用工作表对象(Worksheet) Selection_Change事件,并在该事件中定义变更单元格填充色的语句。该事件的形式为:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    在该事件过程的定义中,有一个名为Target类型的Range参数。该参数表示触发该Selection_Change事件的单元格或者单元格区域。即当选择区域发生了变化,用户重新选择了新的单元格区域后,该新的单元格区域将触发该事件的启动。因而该Target参数表示新的单元格区域,即当前用户选中的单元格区域。
    通常情况下,事件中的参数名称可以由用户自定义,然而参数类型和相对的顺序必须严格按照事件过程的定义编写。如以上事件可以写为

Private Sub Worksheet_SelectionChange(ByVal Rng As Range)

    此时,参数Rng表示当前选中的单元格区域。但以下过程由于其参数的类型发生了变化,在实际执行过程中将会发生错误。

Private Sub Worksheet SelectionChange(ByVal Target As Object)

启用Excel的事件

    当需要启用Excel的事件,无须进行额外的设置时,只需要将事件程序按照规定的形式写入工作表、工作簿或者相应模块的代码中即可。

工作表事件一览

                                 工作表事件及其程序

    事  件

    事件程序

工作表激活

Worksheet_activate()

双击单元格

Worksheet_BeforeDoubleClick(ByVal Taylet As Range,_Cancel As Boolean)

鼠标右击单元格

Worksheet_BeforeRightClick(ByVal Target As Range,_Cancel As Boolean)

工作表计算

Worksheet_Calculate()

工作表的值改变

Workgheet_Change(ByVal Target As Range)

失去激活状态

Worksheet_Deactivate()

单击超链接

Worksheet_FollowHypedink(ByVal Target As Hyperlink)

数据透视表更新

Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

选择区域变化

Worksheet_SelectionChange(ByVal target As Range)

 

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值