我试图在excel VBA中创建一个条件,其中有两个变量x和y的可能条件,
比如说
Sub Test()
X = 6
Y = 11
If X < 3 Or X > 5 And Y < 10 Then
X = 10
Else
X = 11
End If
MsgBox X
End Sub
对于X术语,当X<3 or X>5
看起来效果很好但是当我将Y更改为任何大于10的值时说11然后结果为10但应该是11.你能不能让我知道我的代码中是否遗漏了某些内容,以便在X<3 or X>5 and (y=11)>10
时结果必须为11。
此致 肯尼斯
答案 0 :(得分:3)
这是运营商优先权的问题。在VB中,逻辑和按位运算符中的顺序如下:
结果是and
在您的情况or
之前执行,导致or
的右侧是整个表达式X > 5 And Y < 10
。
您的情况执行如下:
If X < 3 Or (X > 5 And Y < 10) Then
我相信你真正想要的是以下(这应该可以解决你的问题):
If (X < 3 Or X > 5) And Y < 10 Then
来源:
答案 1 :(得分:0)
考虑:
Sub Test()
X = 6
Y = 11
If (X < 3 Or X > 5) And Y < 10 Then
X = 10
Else
X = 11
End If
MsgBox X
End Sub