【问题标题】:Adding subroutine to hyperlink not working向超链接添加子程序不起作用
【发布时间】:2017-10-18 01:47:28
【问题描述】:

我正在尝试将超链接添加到将链接到子例程的名称。当用户单击超链接名称时,将调用子例程。

现在,我可以超链接一个单元格,并且我有一些代码会显示一个消息框,但是当我单击超链接单元格时没有出现任何内容。

"Assign macro to hyperlink" tutorial I'm using

简化代码:

Sub Main()
    Call SetHyperlink
End Sub

Sub SetHyperlink()
    Range("A6").Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="$A$6", TextToDisplay:="TEST"  
End Sub

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    'Check if the Target Address is same as you have given
    'In the above example i have taken A4 Cell, so I am
    'Comparing this with $A$4

    If Target.Range.Address = "$A$6" Then
        'Write your all VBA Code, which you want to execute
        'Or Call the function or Macro which you have
        'written or recorded.
        MsgBox "Write your Code here to be executed"
        Exit Sub
    End If
End Sub

我对 vba 还是很陌生,所以如果很明显,请告诉我其中的原因。提前谢谢!

【问题讨论】:

  • 单击单元格时只运行宏可以吗?或者您是否尝试在一个单元格中包含多个此类超链接。
  • 我希望在单击超链接单元格“A6”时运行Worksheet_FollowHyperlink sub
  • 您确定超链接是在Worksheet_FollowHyperlink 代码所在的同一工作表上创建的吗?还是您将Worksheet_FollowHyperlink 代码放在Worksheet 模块本身或标准模块中?因为它就像为我写的那样工作:)
  • @ScottHoltzman 我不确定,我该如何检查?有多个工作表,所以听起来可能就是这样。
  • @JonathanPorter - 你可以将它放在ThisWorkbook 对象的Workbook_SheetFollowHyperlink 模块中。这将要求在任何工作表中单击任何超链接。您可以使用sh 变量进一步过滤特定工作表采取的操作。这将始终驻留在工作簿中,并适用于新创建的或现有的工作表。

标签: excel hyperlink vba


【解决方案1】:

使用工作簿模块,使用此代码将检查超链接文本,然后根据超链接选择调用宏。

    Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
    Select Case Target.TextToDisplay
    Case "hi"
        MsgBox "Hi"
    Case "Oranges"
        MsgBox "You selected oranges"
    Case "Banana"
        MsgBox "Banana"
    Case "Trees"
        MsgBox "Tree"
    End Select

End Sub

【讨论】:

  • 我不确定乔纳森的意思
猜你喜欢
  • 1970-01-01
  • 2013-05-22
  • 2023-03-17
  • 1970-01-01
  • 2014-10-01
  • 2020-05-08
  • 1970-01-01
  • 2017-08-03
  • 2012-07-09
相关资源
最近更新 更多