单击超链接时执行宏

时间:2016-06-13 07:57:41

标签: excel vba excel-vba hyperlink macros

我有一个工作表,其中数据表的每一行都有一个基于公式的超链接。我希望这些超链接在每次单击其中一个时执行宏。宏需要一个参数来根据单击哪个行的超链接采取不同的行为,因此我使用的是活动单元格的行号。

我尝试过各种各样的方法,但没有一种方法可以完成功能。在大多数情况下,我需要在事件宏本身中指定单元格地址,这不是可伸缩选项。

示例数据:

Col A  Col B
A      Link: A
B      Link: B
C      Link: C
D      Link: D
E      Link: E

上表中的第二列应该是超链接列表。

我在第二列中使用的超链接公式(例如在单元格B1中):

=HYPERLINK(MID(CELL("filename"),FIND("[",CELL("filename")),FIND("]",CELL("filename"))-FIND("[",CELL("filename"))+1)&ADDRESS(ROW(),COLUMN()-1),"Link: "&$A1)

我在工作表代码中使用的宏:

Private Sub Workbook_SheetFollowHyperlink(ByVal Target As Hyperlink)
    Dim sData As String
    sData = "text: " & sData & Range(Target.Range.Address). _
    Offset(0, -1).Value & vbCr
    MsgBox sData
End Sub

对于我这种情况,当我点击超链接

时,上面的宏甚至都没有运行

1 个答案:

答案 0 :(得分:0)

在Excel 2013中,Workbook_SheetFollowHyperlink的方法“签名”为您的事件处理程序提供了另一个参数。您可以在代码中加入ByVal Sh As Object,然后重试:

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
  'your code goes here
End Sub