VBA如何处理'或'陈述

时间:2014-02-03 16:27:18

标签: excel vba

我有以下代码

Dim qt As QueryTable
For Each qt In ActiveSheet.QueryTables
    If qt.Sql = SQLSTRING Then Exit For
Next qt
If qt Is Nothing Or qt.Sql <> SQLSTRING Then 
     DoStuff 
End If

我有一个问题,因为我可以看到'qt is nothing'正在评估为true,但在同一行上,我得到'91:对象变量或With block变量未设置'错误。这不是问题,因为我可以很容易地发现错误,但是我很惊讶,因为我认为如果'或'的第一个条款评估为真,它甚至不应该尝试评估第二个条款......这是不是我可以依赖的东西吗?

1 个答案:

答案 0 :(得分:0)

VBA 不是那么聪明,请使用:

If qt Is Nothing Then
    DoStuff
Else
    If qt.Sql <> SQLSTRING Then
        DoStuff
    End If
End If