用户定义函数从单元格获取超链接地址

时间:2014-11-24 08:14:47

标签: excel vba hyperlink user-defined-functions

我正在尝试使用自己的用户定义函数填充单元格的内容。特别是,我试图使单元格的内容成为同一工作表中的超链接单元格的URL地址。

我一直收到#VALUE!错误。我的功能如下:

Function GetAddress(myCell As Range) As String
     Dim temp As String
     temp = myCell.Hyperlinks(1).Address
     GetAddress = temp
End Function

我尝试了几种不使用temp但直接分配GetAddress输出的变体,但这仍然不起作用。如果我返回myCell.Address它会正确地给我单元格地址但是一旦我尝试获取超链接地址就会出现问题。我见过的每个例子都失败了。

有谁知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您的代码工作正常,只是您必须强制UDF重新计算,否则其结果不会更新。如果您希望自动重新计算,可以使用Application.Volatile(并且可以删除不必要的温度):

Function GetAddress(myCell As Range) As String
    Application.Volatile
    GetAddress = myCell.Hyperlinks(1).Address
End Function

现在您不必手动强制重新计算。虽然要注意多次调用volatile函数会让事情变慢。

手动执行的示例:

enter image description here

现在在A1中写一些东西:

enter image description here

现在添加一个链接:

enter image description here

功能无法重新计算...强制重新计算,例如单击单元格,按F2,然后按Enter:

enter image description here