You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA中And/Or逻辑困惑:为何第二个If语句生效?

逻辑判断错误原因解析

你的核心需求是:当输入的水果不属于Peach、Banana、Mango三者之一时,弹出"Fruit Not Available"提示。我们来拆解两段代码的逻辑差异:

第一段用Or的代码问题

这段代码的判断逻辑是:只要输入的水果不是Peach,或者不是Banana,或者不是Mango,就触发提示。

If Item.Value <> "Peach" or Item.Value <> "Banana" or Item.Value <> "Mango" Then
   MsgBox "Fruit Not Available"
End If

但不管你输入什么水果,这个条件永远为真:

  • 假设输入的是Peach,那么Item.Value <> "Banana"和Item.Value <> "Mango"都是成立的,Or只要有一个条件成立就会执行提示,这就导致合法水果也弹出错误提示;
  • 输入Apple、Orange这类非法水果时,三个条件都成立,虽然会弹出提示,但合法水果的误判已经让逻辑完全失效。

第二段用And的代码逻辑

这段代码的判断逻辑是:输入的水果同时不是Peach、不是Banana、不是Mango,才触发提示。

If Item.Value <> "Peach" And Item.Value <> "Banana" And Item.Value <> "Mango" Then
   MsgBox "Fruit Not Available"
End If

这个逻辑完全匹配你的需求:

  • 输入Peach/Banana/Mango中的任意一个时,对应的<> 水果名条件不成立,And要求所有条件都成立才执行,所以不会弹出提示;
  • 输入Apple、Orange这类不在列表里的水果时,三个条件都成立,触发提示。

简单说,你要判断的是「不在集合内」,对应的逻辑是「同时不等于集合中的每一个元素」,而非「不等于集合中的某一个元素」,所以必须用And而非Or。

内容的提问来源于stack exchange,提问作者Deon Bowers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:52:15