我有一个单元格,其中有一个 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