Excel精英培训网

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

[分享] 【烟花原创】VBA零基础之第41篇 Workbook对象(八)

[复制链接]
发表于 2013-12-5 08:38 | 显示全部楼层 |阅读模式
本帖最后由 hwc2ycy 于 2013-12-5 08:40 编辑

  Workbook.SheetFollowHyperlink 事件
  单击 Microsoft Excel 中的任何超链接时发生此事件。
  语法:SheetFollowHyperlink(Sh, Target)
  Sh,这个就不需要介绍了,不记得的往上翻一篇。
  TargetHyperLink对象,具体的属性值,翻翻F1,一边看一边折腾。
  示例:
   Private SubWorkbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
    Debug.Print Sh.Name & ":" & Target.Address
   End Sub
  ‘ 立即 窗口输出工作表名,超链接的地址

  Workbook.SheetSelectionChange 事件
  任一工作表上的选定区域发生更改时,将发生此事件(但图表工作表上的选定区域发生改变时,不会发生此事件)。
  语法:SheetSelectionChange(Sh, Target)
  Sh,新选定区域所在的工作表(图表工作表不会触发此事件)
  Target,新选定的单元格区域,如果是选则多个不相连的单元格区域,在处理多个单元格区域引用时注意操作。
  示例:
   Private SubWorkbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
    Application.StatusBar = " 工作表 " &Sh.Name & " 选中了单元格区域:" & Target.Address
   End Sub
   ‘在状态栏显示当前选中的单元格区域地址。

  关于Workbook对象的介绍基本就告一段落,下面补充几个知识点:
  1.事件触发的联动、顺序,先看看示例代码:
  Option Explicit

  Dim strMsg As String

  Private Sub Workbook_NewSheet(ByVal Sh AsObject)
   strMsg = "工作簿对象的NewSheet事件触发,新建的工作表 " & Sh.Name
   MsgBox strMsg
  End Sub

  Private Sub Workbook_SheetActivate(ByVal ShAs Object)
   strMsg = "工作簿对象的SheetActivate事件触发,激活的工作表 " & Sh.Name
  MsgBox strMsg
  End Sub

  Private SubWorkbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range,Cancel As Boolean)
     strMsg = "工作簿对象的SheetBeforeRightClick事件触发" & vbNewLine
   strMsg = strMsg & "右键操作所在的工作表 "& Sh.Name & vbNewLine
   strMsg = strMsg & "右键操作所在的单元格区域 "& Target.Address
   MsgBox strMsg
  End Sub

  Private Sub Workbook_SheetDeactivate(ByValSh As Object)
   strMsg = "工作簿对象的SheetDeactivate事件触发,停用的工作表" & Sh.Name
   MsgBox strMsg
  End Sub

  Private SubWorkbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
   strMsg = "工作簿对象的SheetSelectionChange事件触发" & vbNewLine
   strMsg = strMsg & "发生事件所在的工作表 "& Sh.Name & vbNewLine
   strMsg = strMsg & "新选中的单元格区域为  " & Target.Address
   MsgBox strMsg
  End Sub

  Private Sub Workbook_WindowActivate(ByValWn As Window)
   strMsg = "工作簿对象的Windowactivate事件触发" & vbNewLine
   strMsg = strMsg & "被激活的窗口 " &Wn.Caption
   MsgBox strMsg
  End Sub

  Private Sub Workbook_WindowDeactivate(ByValWn As Window)
   strMsg = "工作簿对象的WindowDeactivate事件触发" & vbNewLine
   strMsg = strMsg & "被停用的窗口 " &Wn.Caption
   MsgBox strMsg
  End Sub
  
  当在工作簿中插入一个工作表时,按先后顺序会触发这些事件
  NewSheet--SheetDeActivate—SheetActivate
  上述事件激活的流程如下:
  插入工作表时,先会触发NewSheet事件。
  新建的工作表由于会自动激活成为当前活动工作表。
  那么之前的活动工作表就会停用,触发SheetDeActivate事件。
  接着,新建的工作表激活,SheetActivate触发。

  当在工作簿中删除一个工作表时,按先后顺序会触发这些事件
  SheetDeActivate—SheetActivate

  如果有应用程序级事件,工作簿事件,工作表事件,那顺序又要另当别论了。
  在应用事件的时候,根据实际需求,量体裁衣。

  
2.如何启用与禁用事件
  Excel提供的对象中有事件的对象不多,用得比较多的一般就是工作簿,工作表与Application对象自身。
  事件通常提到的三个级别也就是应用程序级(加载宏),工作簿级(工作簿事件)与工作表级(工作表事件)。
  通过设置ApplicationEnableEvents属性可以打开与关闭事件(该属性对于窗体的事件无效,自定义类的事件有待验证)。
  EnableEvents属性是Boolean类型,为True时响应事件,为False时禁用事件。
  当在一个过程中关闭事件响应时,在代码退出前记得再打开该属性。
  如果碰到有事件代码不执行的情况,可在立即窗口中输入? Application.EnableEvents 
  根据显示的结果进行排错。

  另外,在位于
Excel中的 开发工具 选项卡 控件 组中的 设计模式 也可以实现事件的启用与禁用(该按钮是切换按钮)。

  调试事件代码时,如果不知何时会触发,可通过以上的范例代码,以显示消息框的形式进行调试,观察参数的值,配合STOP或断点,都是很好的手段。

  工作簿对象的事件对于XML,数据透视表也提供了支持,在实际处理中如果有需要用到相关事件的话可以好好折腾。

  生命在于运动,代码在于折腾。

发表于 2013-12-5 19:54 | 显示全部楼层
回复

使用道具 举报

发表于 2013-12-5 20:20 | 显示全部楼层
回复

使用道具 举报

发表于 2013-12-5 22:24 | 显示全部楼层
好好学习
回复

使用道具 举报

发表于 2013-12-15 08:52 | 显示全部楼层
老师辛苦,帮你顶一下
回复

使用道具 举报

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

使用道具 举报

发表于 2014-6-18 23:08 | 显示全部楼层
终于勉强完成
谢谢分享,标记,四十一
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 08:29 , Processed in 0.137224 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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