[英]Excel VBA: Sub routine or function to handle hyperlink clicks
有很多关于此的信息,但是我还没有让它自己工作。
我需要做的是拥有一个全局子例程,该例程可以捕获整个文档(而不仅仅是活动工作表)的超链接点击。 为什么? 因为我的工作簿将在几张纸上有几个链接,除了它们的位置(以及相邻单元格的内容等)以外,其他所有链接都是“相同的”。
使用按钮很容易做到这一点-只需将所有按钮都连接到同一个宏-但是我在使用链接进行相同操作时遇到了问题。
这适用于一个特定的工作表:
在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
我在这里想念什么?
通过使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.