在VBA UDF中添加超链接
我已经看过如何编辑一个超链接 – 但是我需要添加一个超链接作为自定义公式使用。
我得到一个#VALUE错误,我不知道为什么。 有没有人有任何想法为什么我得到一个#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
我发现了一个非常复杂的方法,这要归功于这个精彩的教程。
http://optionexplicitvba.blogspot.co.uk/2011/04/rollover-b8-ov1.html
所以基本上你把它放在一个超链接,你可以随心所欲地做。
=hyperlink(testit39(), "Wahoo it works!")
UDF(用户定义的函数)只允许返回一个值,它们可能不会影响其他单元格或执行其他操作。
当你单步执行你的代码时,你会发现它会中止...Hyperlinks.Add
-line(并返回一个错误值)。
遵循VBA子代码片段允许添加新的超链接或编辑指定样本单元格“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)调用你的项目的其余业务逻辑(这是有点不清楚)的子项:
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
希望这会有所帮助。 最好的祝福