为什么“或”不起作用,为什么“与”在这里起作用?

W-h*_*hit 1 excel vba

在我的情况下,使用OR无效,我必须使用AND,而且我不确定为什么。

Sub blah()
    If LCase(Environ("username")) <> "me" Or LCase(Environ("username")) <> "some other user" Then '''DOESN'T WORK
        Stop
    ElseIf LCase(Environ("username")) <> "me" And LCase(Environ("username")) <> "some other user" Then  '''WORKS
        Stop
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

Mat*_*don 7

您的示例很难理解,但是您可能只是对运营商的性质感到困惑。

想想真相表;一个Or运算的结果是,True如果至少一个操作数是True

True Or True   => True
True Or False  => True
False Or True  => True
False Or False => False
Run Code Online (Sandbox Code Playgroud)

类似地,结果And操作是True如果两个操作数都是True

True And True   => True
True And False  => False
False And True  => False
False And False => False
Run Code Online (Sandbox Code Playgroud)

如果有帮助,你可以想像Or+(加)和And作为*(乘)操作,有False0True是“不为零”:

1 Or 1 => 1 + 1 => True
1 Or 0 => 1 + 0 => True
0 Or 1 => 0 + 1 => True
0 Or 0 => 0 + 0 => False

1 And 1 => 1 * 1 => True
1 And 0 => 1 * 0 => False
0 And 1 => 0 * 1 => False
0 And 0 => 0 * 0 => False
Run Code Online (Sandbox Code Playgroud)