假设我有一个超级链接驻留在单元格B4中,它将用户发送到单元格X30。典型的VBA超链接点击事件只允许您访问超链接的“目标”(单元格X30)。但我想获取超链接的位置(单元格B4),以便我运行的代码可以依赖于物理超链接的 where 。有没有办法做到这一点?
我已经尝试过的一个选项是使用ActiveCell对象。问题是,对于每个超链接,我需要将其自己的位置指定为目标,因为ActiveCell仅在跟随超链接后运行,这意味着它指的是目标,而不是那个地点。实际上这样做可以工作,因为我只使用超链接作为宏启动按钮(而不是'链接'),但是因为我有很多这些按钮并且会复制粘贴它们,我需要一种自动指定“target = self”或其他东西的方式(而不是“target = B4”)。
答案 0 :(得分:2)
这似乎对我有用:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Debug.Print Target.Range.Address
End Sub
在您的示例中,我通过右键单击 - >在B4中放置超链接;超链接 - >放在本文档中 - > Sheet1,单元格引用X30。
当我点击链接时,我在即时窗口中得到的输出是
$B$4
这是超链接所在的地址。
此外,如果您要超链接到其他工作表,并且想要查看“父级”(或超链接源自的位置)工作表名称,您可以使用以下代码:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Debug.Print "'" & Target.Range.Parent.Name & "'!" & Target.Range.Address
End Sub
在我的快速测试中,我在Sheet3上放了一个超链接,引用Sheet1上的单元格A1,单击时返回
'Sheet3'!$B$2