Excel 在VBA UDF中添加超链接

Excel 在VBA UDF中添加超链接,excel,vba,Excel,Vba,我已经看到了如何编辑超链接-但当用作自定义公式时,我需要添加超链接 我得到一个#值错误,我不知道为什么。有人知道为什么我在工作表中尝试使用#值错误作为=test39() UDF(用户定义函数)仅允许返回值,例如,它们不能执行其他操作。 当您单步浏览代码时,您将看到它在…超链接.Add-行上中止(并返回一个错误值)。以下VBA子代码片段允许添加新的超链接,或编辑指定示例单元格“A1”中现有的超链接(为了更清晰,代码的非必要部分已被删除): 您可以从可以定义的函数(UDF)中调用此子函数,该函数对应

我已经看到了如何编辑超链接-但当用作自定义公式时,我需要添加超链接

我得到一个#值错误,我不知道为什么。有人知道为什么我在工作表中尝试使用#值错误作为
=test39()

UDF(用户定义函数)仅允许返回值,例如,它们不能执行其他操作。

当您单步浏览代码时,您将看到它在
…超链接.Add
-行上中止(并返回一个错误值)。

以下VBA子代码片段允许添加新的超链接,或编辑指定示例单元格“A1”中现有的超链接(为了更清晰,代码的非必要部分已被删除):

您可以从可以定义的函数(UDF)中调用此子函数,该函数对应于项目的其余业务逻辑(这有点不清楚):


希望这会有所帮助。最诚挚的问候

多亏了这本精彩的教程,我找到了一种并不复杂的方法

所以,基本上你把它放在一个超链接中,你可以随心所欲

=hyperlink(testit39(), "Wahoo it works!")

这实际上是可能的,但需要复杂的变通方法。如果使用超链接功能,则不复杂。。
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
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
=hyperlink(testit39(), "Wahoo it works!")