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

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

我不断收到#VALUE! 错误。 我的function如下所示:

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

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

有谁知道这可以做到吗?

你的代码工作正常,除了你只需要强制UDF重新计算,否则其结果不会得到更新。 如果你想自动重新计算,你可以使用Application.Volatile (你可以删除不必要的temp):

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

现在您不必手动强制重新计算。 虽然要小心,多次调用volatile函数可以减慢速度。

手动执行示例:

在这里输入图像说明

现在在A1中写一些东西:

在这里输入图像说明

现在添加一个链接:

在这里输入图像说明

函数没有得到重新计算…迫使它重新计算,例如通过单击单元格,按F2,然后按Enter键:

在这里输入图像说明