Множественные логические выражения VBA - PullRequest
1 голос
/ 30 сентября 2019

У меня проблемы с некоторой булевой логикой.

По сути, я хочу что-то запрограммировать в VBA фильтр таким образом, чтобы

A = True AND (B = True OR B = False)

Я просто не могу получить правильное кодирование длясделать это в VBA (я использую MS Access).

Я пытался:

A = True AND B = True OR B = False

Но это, очевидно, не удается (ищет A, B = True или B = False, по существу).

Я что-то упускаю здесь очевидное?

Я решил опустить реальный код, но если потребуется, я могу опубликовать. Я думаю, что мне не хватает некоторого базового в булевой логике.

1 Ответ

0 голосов
/ 30 сентября 2019

Если 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

Редактировать:Я неправильно прочитал ОП, мой мозг поместил туда C. If A And (B Or Not B) Then является избыточным, , как указал BigBen - упрощенная логика будет If A Then. Тем не менее, стоит отметить приоритет оператора и использовать скобки, когда это применимо и уместно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...