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

时间:2016-01-25 18:26:12

标签: 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

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

  

运行时错误'13'

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

1 个答案:

答案 0 :(得分:5)

LinkSources会返回Empty或数组。

您无法使用等号运算符将数组与Empty进行比较。

documentation向您展示了使用IsEmpty功能检查结果的正确方法。

无论Variant中存储的值类型如何,该功能都会成功 如果是你那里有一个Nothing,你会得到错误91 或者,如果您有对象引用,则您的比较将尝试获取存储对象的default property并将其与Empty进行比较。

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