我有以下
Public Sub BreakAllLinks(ByRef aWkBook As Excel.Workbook)
Dim Link As Variant
Dim myLinks As Variant
myLinks = aWkBook.LinkSources(Type:=Excel.xlLinkTypeExcelLinks)
If Not (myLinks = Empty) Then
For Each Link In myLinks
aWkBook.BreakLink Name:=Link, Type:=Excel.xlLinkTypeExcelLinks
Next Link
End If
End Sub 'BreakAllLinks
如果myLinks为空,那么它运行良好并避免For Each
循环,但如果myLinks包含一些链接,那么我会收到以下错误
运行时错误'13'
If Not (myLinks = Empty) Then
有什么问题?
答案 0 :(得分:5)
LinkSources
会返回Empty
或数组。
您无法使用等号运算符将数组与Empty
进行比较。
documentation向您展示了使用IsEmpty
功能检查结果的正确方法。
无论Variant
中存储的值类型如何,该功能都会成功
如果是你那里有一个Nothing
,你会得到错误91
或者,如果您有对象引用,则您的比较将尝试获取存储对象的default property并将其与Empty
进行比较。
这就是为什么你不应该真正检查= Empty
,而只使用IsEmpty
。