Логічні оператори в 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.
