2014-11-24 74 views
1

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

我不断收到#VALUE!错误。我的功能看起来是这样的:

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

我曾尝试不使用临时而是直接指定输出的getAddress,这仍然无法正常工作的几种形式。如果我返回myCell.Address,它会正确给出单元格地址,但是一旦我尝试获取超链接地址,就会出现问题。我见过的每个例子都会失败。

有谁知道这可以做到吗?

+1

我测试你的代码,无法重现您的问题。代码按预期工作。 [证明](http://i.imgur.com/OdoJwZR.png) – 2014-11-24 08:37:46

+0

我同意@ Jean-FrançoisCorbett。经过测试,它工作。你确定你正在传递正确的单元格功能吗?你是如何通过它?如果单元格中没有超链接,则返回“#VALUE”,那么您是否可以首先手动验证是否存在超链接? – 2014-11-24 08:40:38

+0

@ vba4all:我认为'Application.Volatile'会帮助... – 2014-11-24 08:51:44

回答

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 image description here

相关问题