有条件的后卫如果不是(x =空)那么

我有以下

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什么问题呢?

LinkSources返回Empty或一个数组。

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

该文档向您显示检查结果的正确方法 – 使用IsEmpty函数。

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

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