在 VBA UDF 中添加超链接
Posted
技术标签:
【中文标题】在 VBA UDF 中添加超链接【英文标题】:Add Hyperlink in VBA UDF 【发布时间】:2022-01-17 22:46:38 【问题描述】:我已经了解了如何编辑超链接 - 但我需要在用作自定义公式时添加超链接。
我收到一个 #VALUE 错误,但我不知道为什么。有没有人知道为什么当我尝试在工作表中将其用作=testit39()
Public Function testit39() As String
Application.Volatile
Dim rng As range, milestoneinfo As String, milestonesymbol As String
Set rng = Application.Caller
milestoneinfo = "info"
milestonesymbol = "symbol"
If rng.Hyperlinks.Count > 0 Then
rng.Hyperlinks(1).address = ""
rng.Hyperlinks(1).screentip = milestoneinfo
Else
ThisWorkbook.ActiveSheet.Hyperlinks.Add Anchor:=rng, _
address:="", _
screentip:=milestoneinfo
rng.Hyperlinks(1).screentip = milestoneinfo
End If
testit39 = milestonesymbol
End Function
【问题讨论】:
【参考方案1】:感谢这个精彩的教程,我找到了一种不复杂的方法..
http://optionexplicitvba.blogspot.co.uk/2011/04/rollover-b8-ov1.html
所以基本上你把它放在一个超链接中,你可以随心所欲..
=hyperlink(testit39(), "Wahoo it works!")
【讨论】:
【参考方案2】:UDF(用户定义的函数)只允许返回一个值,它们可能不允许,例如affect other cells 或做其他操作。
当您单步执行代码时,您会看到它在 ...Hyperlinks.Add
行中终止(并返回一个错误值)。
【讨论】:
这实际上是可能的,但需要复杂的解决方法。 ***.com/questions/8520732/… 如果使用超链接功能并不复杂..optionexplicitvba.blogspot.co.uk/2011/04/rollover-b8-ov1.html【参考方案3】:遵循 VBA 子代码 sn-p 允许添加新的超链接,或编辑指定示例单元格“A1”中的现有超链接(为了更清晰,代码的非必要部分已被删除):
Public Sub AddOrEditHyperlink(milestonesymbol As String)
Dim rng As Range, milestoneinfo As String
'test range
Set rng = Range("A1")
'sample properties
milestoneinfo = "info"
'if Hyperlink exists, display "Edited"
If rng.Hyperlinks.Count > 0 Then
rng.Hyperlinks(1).Address = ""
rng.Hyperlinks(1).ScreenTip = milestoneinfo
rng.Hyperlinks(1).TextToDisplay = "Edited Hyperlink"
Else 'if Hyperlink does not exist, add and display "New"
rng.Hyperlinks.Add _
Anchor:=rng, _
Address:="", _
ScreenTip:=milestoneinfo, _
TextToDisplay:="New Hyperlink"
End If
End Sub
你可以从你可以定义的函数(UDF)中调用这个Sub,对应于你项目的其余业务逻辑(这有点不清楚):
Public Function testit39() As String
Application.Volatile
Dim rng As Range, milestoneinfo As String, milestonesymbol As String
Call AddOrEditHyperlink("some Symbol")
testit39 = milestonesymbol
End Function
希望这会有所帮助。最好的问候
【讨论】:
以上是关于在 VBA UDF 中添加超链接的主要内容,如果未能解决你的问题,请参考以下文章
VBA 将多个超链接添加到一个 Powerpoint 文本框