打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
跟烟花入门VBA:Workbook对象(八)

 

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,数据透视表也提供了支持,在实际处理中如果有需要用到相关事件的话可以好好折腾。

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


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel 工作簿、工作表事件例子
Xcel事件
Excel中VBA之工作表事件与工作簿事件区别
学习VBA,报表做到飞 第五章 事件篇 5.4 Workbook_NewSheet事件
自学资料(Excel VBA)[收集整理16]
Excel VBA解读(93):工作簿对象的SheetActivate、SheetDeactivat...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服