Workbook.SheetFollowHyperlink 事件
单击 Microsoft Excel 中的任何超链接时发生此事件。
语法:SheetFollowHyperlink(Sh, Target)
Sh,这个就不需要介绍了,不记得的往上翻一篇。
Target,HyperLink对象,具体的属性值,翻翻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对象自身。
事件通常提到的三个级别也就是应用程序级(加载宏),工作簿级(工作簿事件)与工作表级(工作表事件)。
通过设置Application的EnableEvents属性可以打开与关闭事件(该属性对于窗体的事件无效,自定义类的事件有待验证)。
EnableEvents属性是Boolean类型,为True时响应事件,为False时禁用事件。
当在一个过程中关闭事件响应时,在代码退出前记得再打开该属性。
如果碰到有事件代码不执行的情况,可在立即窗口中输入? Application.EnableEvents
根据显示的结果进行排错。
另外,在位于Excel中的 开发工具 选项卡 控件 组中的 设计模式 也可以实现事件的启用与禁用(该按钮是切换按钮)。
调试事件代码时,如果不知何时会触发,可通过以上的范例代码,以显示消息框的形式进行调试,观察参数的值,配合STOP或断点,都是很好的手段。
工作簿对象的事件对于XML,数据透视表也提供了支持,在实际处理中如果有需要用到相关事件的话可以好好折腾。
生命在于运动,代码在于折腾。
联系客服