条件保护IF不(x =空)然后

why*_*heq 0 excel vba excel-vba

我有以下内容

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
Run Code Online (Sandbox Code Playgroud)

如果myLinks为空,那么它运行良好并避免For Each循环,但如果myLinks包含一些链接,那么我得到以下错误

运行时错误'13'

有什么问题If Not (myLinks = Empty) Then

GSe*_*erg 5

LinkSources返回一个Empty或一个数组.

您无法Empty使用相等运算符比较数组.

文件显示你检查结果的正确方法-使用IsEmpty功能.

无论您存储的值类型如何,该函数都会成功Variant.
如果你有一个Nothing在那里,你会得到错误91.
或者,如果你有一个对象引用,你的比较将尝试获取存储对象的默认属性并将其与之比较Empty.

这就是为什么你不应该= Empty真的检查,只能使用IsEmpty.