使用IF的组合,并在excel VBA中

时间:2015-12-06 13:53:40

标签: excel excel-vba vba

我试图在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。

此致 肯尼斯

2 个答案:

答案 0 :(得分:3)

这是运营商优先权的问题。在VB中,逻辑和按位运算符中的顺序如下:

  1. 否定(不)
  2. 连接(And,AndAlso)
  3. 包容性分离(Or,OrElse)
  4. 独家分离(Xor)
  5. 结果是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