我只是想知道你是否可以创建一个宏,它将超链接一个单元格并为其分配一个单独的宏?
我知道您可以使用超链接使用以下
运行宏Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Call Macro Name
End Sub
我也知道您可以使用宏来使用以下
创建超链接With Worksheets(1)
.Hyperlinks.Add Anchor:=.Range("a5"), _
Address:="", _
ScreenTip:="", _
TextToDisplay:= ""
End With
无论如何将这些放在一起?或者有没有办法使用第二个代码来分配宏?而不是地址?
因此,如果我创建一个从原始数据选项卡中获取数据的宏,并将其放入这样的表中
然后,宏需要为值(4,2,5,2,5)指定一个超链接,该超链接将在单击时运行单独的宏。我希望它看起来像这样
With Worksheets(1)
.Hyperlinks.Add Anchor:=.Range("B2"), _
Address:=Macro Name, _
ScreenTip:="", _
TextToDisplay:= ""
End With
还有更多内容,因为表格可能有更多行,因此超链接必须具有可变范围等,但我只是想知道它是否可行,因为我可以'让它按上述方式工作
答案 0 :(得分:1)
有可能,但默认情况下不行。您将执行某种解决方法:
在例如连接到B2本身的单元格B2上创建超链接。
.Hyperlinks.Add Anchor:=Range("B2"), Address:="", SubAddress:=Range("B2").Address
然后使用Target
决定应调用哪个宏,这样您就可以使用地址Target.Parent.Address
或单元格值Target.Parent.Value
来区分宏。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'decide by address
Select Case Target.Parent.Address
Case "$B$2"
CallMacro1
Case "$B$3"
CallMacro1
End Select
'or by intersection a range
Select Case True
Case Not Intersect(Target.Parent, Range("B4:B8")) Is Nothing
CallMacro1
End Select
'or by value
Select Case Target.Parent.Value
Case 2
CallMacro1
Case 4
CallMacro1
End Select
End Sub
请注意,Call
语句已弃用,不应再使用。只需使用宏名称本身来调用宏:而不是Call MacroName
只需使用MacroName
。
或者使用ScreenTip
作为解决方法来设置宏名称
.Hyperlinks.Add Anchor:=Range("B4"), Address:="", SubAddress:= _
Range("B4").Address, ScreenTip:="MyMacro"
然后使用ScreenTip
运行该宏
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Application.Run Target.ScreenTip
End Sub
请注意,MyMacro
必须在模块中公开,否则您需要使用例如。 Sheet1.MyMacro
告诉宏实际上是在哪个范围内。否则会抛出宏名称不存在的错误。
另请注意,这是一种解决方法,错过使用ScreenTip
。