Логические операторы в VBA предназначены для манипуляций логическими значениями True и False (в числовом представлении это 1 и 0).
Обычно, результатом логических операций является значение типа Boolean.
Содержание урока:
Все логические операторы VBA
| Оператор | Синтаксис | Описание |
| And | a And b |
Конъюкция (Логическое И). Если a и b имеют значение True, тогда – True. Иначе – False. |
| Or | a Or b |
Дизконъюкция (Логическое ИЛИ). Если хотя бы один из операндов имеет значение True, тогда –True. Иначе – False. |
| Not | a Not b |
Отрицание (Логическое НЕТ). Если a имеет значение False, тогда – True. Иначе – False. |
| Xor | a Xor b |
Исключение (Логическое исключающее ИЛИ). Если a имеет значение True, или b имеет значение True, тогда – True. Иначе – False. |
| Eqv | a Eqv b |
Логическая эквивалентность. Если a имеет такое же значение что и b, тогда – True. Иначе – False. |
| Imp | a Imp b |
Логическая импликация. Если a имеет значение True и b имеет значение False, тогда – False. Иначе – True. |
Логический оператор And
Логический оператор And в языке VBA обозначает операцию конъюкции, результатом выполнения которой будет значение True тогда и только тогда, когда все операнды выражения имеют значение True. В любом другом случае, результатом выполнения этой операции будет значение False.
Пример
Sub myCode()
a = (5 > 4) And (6 > 1)
b = (5 > 7) And (6 > 1)
MsgBox (a)
MsgBox (b)
End Sub
В первом выражении мы получим результат True и присвоим этот результат переменной a, поскольку оба операнда имеют значение True (5 больше чем 4 и 6 больше чем 1). А во втором выражении результат будет False, поскольку один из операндов имеет значение False (5 НЕ больше чем 7). Этот результат будет присвоен переменной b. Двумя последними строками кода мы поочерёдно выведем сообщения, которые отобразят значение переменных a и b.
Логический оператор And можно использовать и для нескольких операндов.
Пример
Sub myCode()
a = (4 < 8) And (2 > 1) And (2 = 2)
MsgBox (a)
End Sub
В данном примере, результатом выражения будет True, так как все операнды имеют значение True. Этот результат будет присвоен переменной a и выведен пользователю в сообщении.
Примечание.
Обратите внимание на то, что операнды в логической конъюкции заключаются в круглые скобки. Первым делом, VBA вычисляет значение каждого операнда внутри скобок, и только потом уже все выражение полностью.
Логический оператор Or
Логический оператор Or обозначает операцию дизъюнкции, результатом выполнения которой будет значение True, если хотя бы один из операндов выражения имеет значение True. Если все операнды имеют значение False, то тогда и только тогда результат всего выражения будет False.
Пример
Sub myCode()
a = (5 > 8) Or (6 > 3)
b = (1 > 5) Or (0 > 8)
MsgBox (a)
MsgBox (b)
End Sub
Результатом вычисления первого выражения будет значение True, поскольку один из операндов имеет значение True (6 больше чем 3).
Результатом вычисления второго выражения будет значение False, поскольку оба операнда имеют значение False (1 не больше чем 5 и 0 не больше чем 8).
Оператор Or можно комбинировать с оператором And.
Пример
Sub myCode()
a = ((3 < 8) And (6 > 5)) Or (4 = 5)
MsgBox (a)
End Sub
В данном примере мы получим результат True.
Первым делом VBA вычислит значение логической конъюкции (3 меньше чем 8 и 6 больше чем 5, получается True). А после этого выполнит дальнейшее вычисление и несмотря на то, что 4 не равно 5 (результат False), результат всего вычисления будет True, поскольку один из операндов выражение имеет значение True.
Логический оператор Not
Оператор Not обозначает операцию логического отрицания и имеет только один операнд. Результатом выполнения этой операции будет значение True, если исходно операнд имеет значение False. И наоборот, если операнд имеет значение True, то результатом будет значение False.
Операторы And, Or и Not можно комбинировать.
Пример
Sub myCode()
a = ((3 > 8) Or (9 > 4)) And Not ((6 > 5) Or (7 < 8))
MsgBox (a)
End Sub
В данном примере, переменной a будет присвоено значение False. Ведь несмотря на то, что оба помещённые в скобки выражения Or имеют значения True, оператор Not преобразовывает второе значение в False. И потому результатом вычисления всего выражения с оператором And будет False.
Логический оператор Xor
Логический оператор Xor выполняет логическое исключение. Если операнды имеют различные значения, то результатом выполнения операции исключения будет True. А если операнды имеют одинаковые значения (оба True, или оба False), то результатом выполнения операции будет False.
Пример
Sub myCode()
a = ((1 > 3) Xor (8 > 2)) And ((2 > 0) Xor (7 < 9))
MsgBox (a)
End Sub
В данном примере, переменной a будет присвоено значение False, потому что: первый помещённый в скобки оператор Xor даст результат True, второй оператор Xor даст результат False, а результат всего оператор And будет False.
Логический оператор Eqv
Логический оператор Eqv – это оператор логической эквивалентности двух выражений. Результатом выполнения этой операции будет значение True, если оба оператора имеют одинаковые значения (оба True, или оба False). В любом другом случае, результат будет False.
Пример
Sub myCode()
a = ((3 < 6) And (6 > 4)) Or Not (7 = 8) Eqv (9 = 9)
MsgBox (a)
End Sub
В данном примере, переменной a будет присвоено значение True.
Логический оператор Imp
Логический оператор Imp выполняет логическую операцию импликации (следования) двух выражений. Результатом выполнения этой операции будет значение False, если первый операнд имеет значение True, а второй – False. Во всех остальных случаях, значение будет True.
Пример
Sub myCode()
a = ((8 < 9) And (6 > 2)) Or Not (3 = 5) Imp (9 = 9)
MsgBox (a)
End Sub
В данном примере, переменной a будет присвоено значение True.
