为什么我的 VBA 函数不评估基于 IF 语句返回 HYPERLINK 的源单元格

为什么我的 VBA 函数不评估基于 IF 语句返回 HYPERLINK 的源单元格

我有一个单元格,其中有一个 IF 函数,该函数根据另一个单元格是否为空,返回一个空值或一个超链接

=IF($R7="","",HYPERLINK(CONCAT('Global Values'!$B$1,$R7),"LINK"))

在 VBA 中,我尝试使用自定义函数 GetURL() 获取超链接的 Address 属性

Function GetURL(rng As Range) As String
   On Error Resume Next
   GetURL = rng.Hyperlinks(1).Address
End Function

问题是我什么也没得到,而是得到了 IF 函数计算出的最终 URL 的地址

出了什么问题?

答案1

使用HYPERLINK函数不是.Hyperlinks集合添加到Range对象。参见:

当使用公式生成超链接时,VBA 打开 Excel 超链接不起作用

因此你可以

  • 检查.Value细胞的属性,或
  • 向单元格添加超链接

尝试以下代码的其中一种变体:

Function GetURL(rng As Range) As String
   'GetURL = rng.Value

'OR

    With rng
        If .Hyperlinks.Count = 0 Then
            .Hyperlinks.Add anchor:=.Item(1), Address:=.Value, TextToDisplay:=.Value
        End If

        GetURL = .Hyperlinks(1).Address

    End With
End Function

如果有必要,您可以添加一些测试以确保.Value计算结果为超链接。也许确保在属性HYPERLINK中找到该函数.Formula

相关内容