Логические операторы VBA
Оператор | Синтаксис | Описание |
AND | A AND B | Конъюнкция: Если А и В имеют значение True, то - True. Иначе - False |
OR | A OR B | Дизъюнкция: Если любой из операндов имеет значение True, то - True. Иначе - False |
NOT | NOT A | Отрицание: Если А имеет значение False, то - True. Иначе - False |
XOR | A XOR B | Исключение: Если А имеет значение True или В имеет значение True, то - True. Иначе - False |
EQV | A EQV B | Эквивалентность: Если А имеет такое же значение что и В, то - True. Иначе - False |
IMP | A IMP B | Импликация: Если А имеет значение True и В имеет значение False, то - False. Иначе - True |
В качестве операнда для логического оператора можно использовать любое действительное выражение, имеющее результат типа Boolean, а также число, которое может быть преобразовано в значение типа Boolean.
Результатом логической операции является значение типа Boolean (или Null, если хотя бы один из операндов имеет значение Null).
Логический оператор AND
Синтаксис:
Операнд_1 AND Операнд_2
Оператор AND выполняет логическую конъюнкцию.
Результатом данной операции является значение True, только когда оба операнда имеют значение True, иначе - False.
Таблица истинности
Операнд_1 | Операнд_2 | Результат |
True | True | True |
True | False | False |
False | True | False |
False | False | False |
Оператор AND можно использовать для нескольких операндов:
(5<7) AND (4>3) AND (5=6) результатом будет False
Независимо от количества операндов результатом логической операции AND будет True только в том случае, когда все операнды выражения будут иметь значение True. В любом другом случае результатом будет False. Обратите внимание, что операнды заключаются в круглые скобки. VBA сначала вычисляет значение каждого операнда внутри скобок, а затем уже все выражение полностью.
Логический оператор OR
Синтаксис:
Операнд_1 OR Операнд_2
Оператор OR выполняет логическую дизъюнкцию.
Результатом данной операции является значение True, если хотя бы один из операндов имеет значение True, иначе - False.
Таблица истинности
Операнд_1 | Операнд_2 | Результат |
True | True | True |
True | False | True |
False | True | True |
False | False | False |
Оператор OR можно использовать для нескольких операндов:
(5<7) OR (4>3) OR (5=6) результатом будет True
Независимо от количества операндов результатом логической операции OR будет всегда True в том случае, если хотя бы один из операндов выражения будет иметь значение True. Иначе результатом будет False.
Операторы AND и OR можно комбинировать:
((5<7) AND (4>3)) OR (5=6) результатом будет True
Логический оператор NOT
Синтаксис:
NOT Операнд
Оператор NOT выполняет логическое отрицание.
Оператор NOT использует только один операнд.
Таблица истинности
Операнд | Результат |
True | False |
False | True |
Операторы AND OR NOT можно комбинировать:
((5<7) AND (4>3)) OR NOT (5=6) результатом будет True
Логический оператор XOR
Синтаксис:
Операнд_1 XOR Операнд_2
Оператор XOR выполняет логическое исключение.
Результатом данной операции является значение True, если операнды имеют разные значения, иначе - False.
Таблица истинности
Операнд_1 | Операнд_2 | Результат |
True | True | False |
True | False | True |
False | True | True |
False | False | False |
((5<7) AND (4>3)) OR NOT (5=6) XOR (5=5) результатом будет False
Логический оператор EQV
Синтаксис:
Операнд_1 EQV Операнд_2
Оператор EQV - это оператор логической эквивалентности.
Результатом данной операции является значение True, если операнды имеют одинаковые значения, иначе - False.
Таблица истинности
Операнд_1 | Операнд_2 | Результат |
True | True | True |
True | False | False |
False | True | False |
False | False | True |
((5<7) AND (4>3)) OR NOT (5=6) EQV (5=5) результатом будет True
Логический оператор IMP
Синтаксис:
Операнд_1 IMP Операнд_2
Оператор IMP выполняет логическую операцию импликации.
Таблица истинности
Операнд_1 | Операнд_2 | Результат |
True | True | True |
True | False | False |
False | True | True |
False | False | True |
((5<7) AND (4>3)) OR NOT (5=6) IMP (5=5) результатом будет True
Логический оператор IMP наименее интуитивно понятный из всех логических операторов. К счастью, необходимость в его применении возникает довольно редко.