如何获得点击超链接的位置?

假设我有一个超链接驻留在单元格B4,将用户发送到单元格X30。 典型的VBA超链接点击事件只允许你访问超链接的“目标”(单元格X30)。 但是我想要获取超链接的位置 (单元格B4),以便我运行的代码可以取决于超链接的物理位置。 有没有办法做到这一点?

我已经尝试过的一个选项是使用ActiveCell对象。 问题是,对于每个超链接,我需要指定它自己的位置作为目标,因为ActiveCell只在遵循超链接之后运行,这意味着它指的是目标,而不是位置。 其实这样做可以工作,因为我只使用超链接作为macros启动button(而不是“链接”),但由于我有这么多,并将复制粘贴它们,我需要一种自动的方式 – 指定“目标=自我”或某物(而不是“目标= B4”)。

这似乎为我工作:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Debug.Print Target.Range.Address End Sub 

在你的例子中,我通过右键单击 – >超链接 – >放置在这个文档 – > Sheet1,单元格引用X30超级链接在B4中。

当我点击链接时,我在即时窗口得到的输出是

$B$4

这是超链接所在的地址。

另外,如果您打算链接到其他工作表,并且想要查看“父”(或超链接的来源)工作表名称,则可以使用以下代码:

 Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Debug.Print "'" & Target.Range.Parent.Name & "'!" & Target.Range.Address End Sub 

在我的快速testing中,我在Sheet3上放置了一个引用Sheet1上的单元格A1的超链接,并在单击时返回

'Sheet3'!$B$2