Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2825|回复: 4

[分享] 【烟花原创】VBA零基础之第55篇 工作表对象Worksheet(十)

[复制链接]
发表于 2013-12-19 22:43 | 显示全部楼层 |阅读模式
  今天聊聊工作表对象的事件。
  前面讲工作簿对象Workbook时也有讲到事件。
  工作簿事件是写在工程内的Thisworkbook当中。
  而工作表事件的代码则是放在特定的工作表对象之中,而且只有特定工作表触发了事件后,相关的事件过程才会被执行。

  首先我们看看工作表的事件代码放哪?
  在工程资源管理器中,定位到特定的VBA工程当中,在文件夹模式中,可以看到有Microsof Excel 对象节点,展开后下面就有工程所在的工作簿内的所有工作表和ThisWorkbook
   55-1.jpg
  双击特定的工作表对象,就会跳转到该对象的代码窗口中。
  和之前的工作簿事件一样,在代码窗口的顶端左边是对象列表。
  下拉列表,从中选择“WorkSheet”。
   55-2.jpg
  顶端右边的是过程/事件列表。
  对象列表中选择Worksheet后,事件列表中就有工作表对象的所有事件过程。
  只需选择相应的事件过程,过程描述就会自动插入到代码窗口中。
  当代码窗口中已经有相应的事件过程后,选择相应的事件过程会直接跳转到代码窗口中的对应的过程当中。
  关于事件过程的声明不需要记,系统已经帮我们定义好了,我们只需在过程/事件下拉列中选择即可添加好事件过程的声明部分,余下的部分只需要完善代码。

  Worksheet.Activate 事件
  激活工作表、图表工作表时发生此事件。
  说明:新建窗口时不发生此事件。
  切换两个显示同一工作簿的窗口时,将发生 WindowActivate 事件,但不发生工作簿的 Activate 事件。
  示例:
    Private Sub Worksheet_Activate()
      Range("a1:a10").Sort Key1:=Range("a1"),Order:=xlAscending
    End Sub

  Worksheet.Deactivate 事件
  图表、工作表被停用时发生此事件。
  示例:
    Private Sub Workbook_Deactivate()
       Application.Windows.Arrange xlArrangeStyleTiled
    End Sub
  此示例在工作簿被停用时对所有打开的窗口进行排列。

  Worksheet.BeforeDoubleClick 事件
  当双击工作表时发生此事件,此事件先于默认的双击操作。
  语法:BeforeDoubleClick(Target, Cancel)
  Target 必选,双击发生时最靠近鼠标指针的单元格。
  Cancel 必选,事件发生时为 False。如果事件过程将此参数设为True,则在完成此过程后,不执行默认的双击操作。
  说明:
   使用 DoubleClick 方法并不触发此事件。
   用户双击单元格的边框时不触发此事件。
   通过设置CancelTrue,可以双击单元格不进入编辑模式。
 
  Worksheet.BeforeRightClick 事件
  右键单击工作表时发生此事件,此事件先于默认的右键单击操作。
  语法:BeforeRightClick(Target, Cancel)
  Target 必选,右键单击发生时最靠近鼠标指针的单元格。
  Cancel 必选,事件发生时为 False
  如果事件过程将此参数设为True,则在完成此过程后,不执行默认的右击单击操作。
  与其他工作表事件相似,当指针在形状或命令栏(工具栏或菜单栏)上时,右键单击不触发此事件。
  示例:
    Private SubWorksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     Dim icbc As Object
     For Each icbc In Application.CommandBars("cell").Controls
      If icbc.Tag = "brccm" Then icbc.Delete
       Next icbc
       If Not Application.Intersect(Target, Range("b1:b10"))  Is Nothing Then
               With Application.CommandBars("cell").Controls _
                    .Add(Type:=msoControlButton,before:=6, _
                       temporary:=True)
                .Caption = "New Context Menu Item"
                .OnAction = "MyMacro"
                .Tag = "brccm"
       End With
       End If
    End Sub
  示例为 B1:B10 单元格添加新的快捷菜单项。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-12-28 10:31 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-18 11:19 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-18 16:29 | 显示全部楼层
{:29:}
回复

使用道具 举报

发表于 2014-6-25 21:39 | 显示全部楼层
继续学习中,谢谢分享,标记,五十五
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 15:14 , Processed in 0.241087 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表