Excel VBA中If not (300<=Val<=500)判断语句失效求助
解决VBA中If Not判断语句不生效的问题
嘿,我一眼就发现问题所在了——VBA不支持像300<=Val<=500这样的连续比较语法!这就是为啥哪怕Val是0,你的条件也始终不成立的原因。
问题根源
在VBA里,300<=Val<=500会被拆解成两步计算:
- 先计算
300 <= Val:当Val=0时,这个结果是False(VBA里False等价于0) - 再用第一步的结果和500比较:
0 <= 500,结果是True - 最后
Not True就变成了False,所以你的条件永远不满足,自然不会执行后续操作
修正后的代码
你需要把连续比较拆成两个独立的条件,用And连接,这样逻辑才正确:
Dim Val As Integer For i = 1 To 2 Val = .Range("N" & i).Value '例如Val的值为0 MsgBox(Val) '用于调试查看值,此例中显示为0 ' 修正后的条件判断 If Not (Val >= 300 And Val <= 500) Then '执行操作 End If Next i
或者更直观的写法,直接判断Val不在300-500范围内:
If Val < 300 Or Val > 500 Then '执行操作 End If
这两种写法的逻辑完全等价,选你看着顺眼的就行~
内容的提问来源于stack exchange,提问作者Bogmadur
相关产品推荐
相关产品推荐

