我对一些布尔逻辑有问题。
本质上,我希望在 VBA 中编程一个过滤器,这样,
A = True AND (B = True OR B = False)
我似乎无法在 VBA 中正确执行此操作(我正在使用 MS Access(。
我试过:
A = True AND B = True OR B = False
但这显然失败了(基本上寻找 A,B = 真或 B = 假(。
我在这里错过了一些明显的东西吗?
我选择省略实际代码,但如果要求,我可以发布。我的想法是我缺少一些基本的布尔逻辑。
如果A
、B
和C
是Boolean
表达式,那么将它们与布尔文字(True
,False
(进行比较是多余的:表达式已经是一个布尔表达式。
这使得原始逻辑是这样的:
If A And (B Or Not C) Then
And
运算符比Or
运算符具有更高的优先级,因此首先对其进行计算;如果需要将(B Or Not C)
部分作为一个整体进行计算,则需要括号,否则A And B
优先,使表达式(错误地(计算为:
If (A And B) Or Not C ' redundant parentheses to illustrate operator precedence
编辑:我误读了OP,我的大脑把那个C
放在那里。 正如 BigBen 指出的那样,If A And (B Or Not B) Then
是多余的 - 简化的逻辑将是If A Then
.仍然值得注意的是运算符优先级,并在适用和适当时使用括号。