有很多关于此事的信息,但我还没有能够让它为自己工作。
我需要做的是拥有一个全局子例程来捕获整个文档的超链接点击,而不仅仅是活动工作表。为什么?因为我的工作簿将在几张表中有几个链接,这些链接都是相同的"除了它们的位置(以及相邻细胞的内容等)。
使用按钮很容易 - 只需将它们全部连接到同一个宏 - 但我在使用链接时也遇到了问题。
这适用于一个特定的表格:
在Microsoft Excel对象中 - >有问题的工作表:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
MsgBox "Link i Arket! " & Target.Range.Address
End Sub
当我单击相关工作表上的链接时,工作表的VBA子例程会捕获单击并处理它。
下面的代码,我想,"应该"为整个文件工作。也就是说,从工作簿中的任何工作表中捕获超链接点击。它没有(也就是说,没有任何反应):
Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
MsgBox "All sheets!"
End Sub
悬停时,Excel中的链接显示:
file://path/to/workbook.xlsm - click once to follow blablabla
我在这里缺少什么?
答案 0 :(得分:1)
通过使用WithEvents工作表对象创建一个类并将类存储在公共集合中,您可以为所有工作表重用相同的代码。
模块1
Public objCollection As Collection
'Call on Workbook_Open
Sub CreateClasses()
Dim ws As Worksheet
Dim HyperlinksClass As cHyperlinks
'Create A New Instance Of The Collection
Set objCollection = New Collection
'Loop All Worksheets
For Each ws In Worksheets
'Create A New Class For This Worksheet
Set HyperlinksClass = New cHyperlinks
'Add The Worksheet To The Class
Set HyperlinksClass.obj = ws
'Add The Class To The Collection
objCollection.Add HyperlinksClass
Next ws
End Sub
创建一个名为cHyperlinks
的类Private WithEvents pWS As Worksheet
Private Sub pWS_FollowHyperlink(ByVal Target As Hyperlink)
'Code to handle hyperlinks here
End Sub
Property Set obj(ByVal objWS As Worksheet)
Set pWS = objWS
End Property