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

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:

【讨论】:

以上是关于从单元格获取超链接地址的用户定义函数的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Excel 中获取单元格超链接地址?

如何使用ruby中的电子表格gem从excel单元格中提取超链接地址?

VBA用户定义的函数来复制单元格的值,文本形成和超链接?

如何通过报表单元格右键控制报表跳转到不同链接地址

皕杰报表之单元格属性

一个 QTableView 单元格中带有图像的超链接