Excel VBA

时间:2016-06-02 14:49:01

标签: excel-vba outlook-vba vba excel

我正在通过Excel VBA查询Outlook数据库,我想对用户定义属性的值应用两个条件。以下代码,在相同的“If”语句中具有两个条件

Set cat1 = CurrentItem.UserProperties.Find("catniveau1")
If cat1 <> "" and Not (cat1 Is Nothing) Then 

,引发以下错误:“对象变量或未设置块变量”。但是,有两个单独的“if”语句正常工作:

Set cat1 = CurrentItem.UserProperties.Find("catniveau1")
If Not (cat1 Is Nothing) Then 
  If cat1 <> "" Then

有没有办法在同一个“if”语句中应用这两个条件?

1 个答案:

答案 0 :(得分:1)

由于逻辑连接而无法同时评估这两个条件&#34;时间&#34;,让我解释一下。

  1. cat1是一个范围(需要确定首先是什么) 由于cat1可能已定义,也可能未定义,因此无法评估其是否为&lt;&gt; &#34;&#34;

  2. cat1&lt;&gt; &#34;&#34;它需要评估范围是什么。 我知道&#34;人类&#34;思考可能在同一时间,但总结:

  3. A)变量需要首先解决为范围...

    B)评估是否&lt;&gt; &#34;&#34;,

    我不明白为什么你需要再次评估if <>"" - 如果它没有找到它没有价值的价值 - 为什么不留下If Not (cat1 Is Nothing) Then这句话呢?