从单元格获取超链接地址的用户定义函数
Posted
技术标签:
【中文标题】从单元格获取超链接地址的用户定义函数【英文标题】:User-Defined Function to Get Hyperlink Address from Cell 【发布时间】:2014-11-24 08:14:47 【问题描述】:我正在尝试使用我自己的用户定义函数来填充单元格的内容。特别是,我试图使单元格的内容成为同一工作表中的超链接单元格的 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,它会正确地给我单元格地址,但是一旦我尝试获取超链接地址,它就会出现问题。我见过的每个例子都失败了。
有谁知道如何做到这一点?
【问题讨论】:
我测试了您的代码,但无法重现您的问题。代码按预期工作。 Proof 我同意@Jean-FrançoisCorbett。经过测试,它有效。您确定将正确的单元格传递给函数吗?你怎么通过它?#VALUE
在单元格中没有超链接时返回,那么您可以先手动验证超链接是否在其中吗?
@vba4all:我认为Application.Volatile
会有所帮助...
【参考方案1】:
您的代码工作正常,只是您只需要强制 UDF 重新计算,否则其结果不会更新。如果你想让它自动重新计算,你可以使用Application.Volatile
(你可以去掉不必要的温度):
Function GetAddress(myCell As Range) As String
Application.Volatile
GetAddress = myCell.Hyperlinks(1).Address
End Function
现在您不必手动强制它重新计算。尽管要注意对 volatile 函数进行多次调用确实会减慢速度。
手动操作示例:
现在在 A1 中写一些东西:
现在添加一个链接:
函数没有被重新计算...强制它重新计算,例如通过单击单元格,按 F2,然后 Enter:
【讨论】:
以上是关于从单元格获取超链接地址的用户定义函数的主要内容,如果未能解决你的问题,请参考以下文章