【问题标题】:Execute macro when clicked on hyperlink单击超链接时执行宏
【发布时间】:2016-10-13 13:24:58
【问题描述】:

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

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

样本数据:

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

在这种情况下,当我点击超链接时,上面的宏甚至没有运行

【问题讨论】:

    标签: vba excel hyperlink macros


    【解决方案1】:

    在 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
    

    【讨论】:

    • 还是不行。我尝试只在 sub 中使用 msgbox 行,但看起来点击链接也没有激活 msgbox
    • 超链接指向左列的相应单元格。其实我不关心超链接,只是想在鼠标单击单元格时执行一个宏,因此超链接可以指向任何地方。我已经有一个在选择单元格时运行的宏。
    猜你喜欢
    • 2016-08-03
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 2014-07-03
    相关资源
    最近更新 更多