Vba 条件保护如果不是(x=空),则

Vba 条件保护如果不是(x=空),则,vba,excel,Vba,Excel,我有以下几点 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.Br

我有以下几点

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是空的,那么它工作得很好,并且避免了每个循环的
,但是如果myLinks包含一些链接,那么我会得到以下错误

运行时错误“13”


有什么问题?如果没有(myLinks=Empty),则返回
或数组

不能使用相等运算符将数组与
进行比较

显示检查结果的正确方法-使用
IsEmpty
函数

无论
变量中存储的值类型如何,函数都会成功
例如,如果您的
中没有任何内容
,则会出现错误91。
或者,如果您在其中有一个对象引用,您的比较将尝试获取存储对象的名称,并将其与
Empty
进行比较


这就是为什么您不应该真正检查
=Empty
,而只使用
IsEmpty

LinkSources
返回
Empty
或数组

不能使用相等运算符将数组与
进行比较

显示检查结果的正确方法-使用
IsEmpty
函数

无论
变量中存储的值类型如何,函数都会成功
例如,如果您的
中没有任何内容
,则会出现错误91。
或者,如果您在其中有一个对象引用,您的比较将尝试获取存储对象的名称,并将其与
Empty
进行比较

这就是为什么你永远不应该检查
=Empty
,而只使用
IsEmpty