excel - 为什么 'AND' 在这里不工作,而 'OR' 在这里工作?

标签 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

最佳答案

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

想想真值表; Or 的结果操作是True如果至少有一个操作数是 True :

True Or True   => True
True Or False  => True
False Or True  => True
False Or False => False

同样,And 的结果操作是True如果两个操作数都是 True :
True And True   => True
True And False  => False
False And True  => False
False And False => False

如果有帮助,您可以可视化 Or作为 + (加法)和And作为 * (乘法)操作,使用 False正在 0True “不为零”:
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

关于excel - 为什么 'AND' 在这里不工作,而 'OR' 在这里工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56066576/

相关文章:

excel - 从 VBA 中的多个按钮调用相同的 SUB

vba - 在子 VBA 中停用 msgbox

excel - Active X 按钮控件 Excel 的空白属性窗口

vba - 使用 VBA 通过模板生成文档

c# - Excel 互操作货币格式

excel - 使用 VBA,我想计算一个字符串在特定列中出现的次数

Excel VBA 匹配还是查找?

Excel vba从不同的Excel应用程序访问工作簿实例

vba - 如何防止免费分发商业 Excel 电子表格

vba - VBS中的Hello world