VBA Logical Operaтори: І, АБО, НІ, ЯКЩО НІ в Excel VBA
⚡ Розумний підсумок
VBA Logical OperaУмови об'єднуються в один результат «Істина» або «Хибність». На цій сторінці пояснюються оператори «І», «АБО» та «НЕ» з прикладами кнопок, що запускаються, повною таблицею істинності та менш відомими операторами Xor, Eqv та Imp.

Логічний Excel VBA Operaторс
Припустимо, ви хочете обробити замовлення клієнта. Для цього ви хочете спочатку перевірити, чи існує замовлений продукт чи ні. Якщо так, ви також хочете перевірити, чи достатньо наявної кількості. У таких випадках стають у пригоді логічні оператори. Логічні оператори використовуються для оцінки кількох умов.
Кожна умова сама по собі побудована з оператори порівняння і повертає True або False. Логічний оператор потім об'єднує ці результати в одну остаточну відповідь.
Основні логічні оператори Excel VBA AND, OR, NOT перераховані в таблиці нижче:
| S / N | Operaтор | Опис | Приклад | Вихід |
|---|---|---|---|---|
| 1 | І | І: використовується для поєднання кількох умов. Якщо всі умови істинні, AND оцінюється як істинне. Якщо будь-яка умова хибна, AND оцінюється як хибна | Якщо (1 = 1) та (0 = 1), тоді | false |
| 2 | OR | АБО: використовується для поєднання кількох умов. Якщо будь-яка з умов має значення true, функція OR повертає значення true. Якщо всі вони false, OR повертає false | Якщо (1 = 1) або (5 = 0), тоді | правда |
| 3 | $NOT | НІ: Ця функція працює як зворотна функція. Якщо умова істинна, вона повертає false, а якщо умова хибна, повертає true. | Якщо ні (0 = 0), то | false |
Три наведені вище описи легше запам'ятати як єдину сітку вхідних даних та результатів.
Таблиця істинності для логічних обчислень VBA Operaторс
Таблиця істинності містить усі комбінації вхідних даних та результат, який повертає кожен оператор. Одноразове прочитання цієї таблиці позбавляє необхідності здогадуватися про будь-яку умову, яку ви пишете пізніше.
| Умова А | Умова Б | А та Б | А або Б | Не А |
|---|---|---|---|---|
| Правда | Правда | Правда | Правда | Помилковий |
| Правда | Помилковий | Помилковий | Правда | Помилковий |
| Помилковий | Правда | Помилковий | Правда | Правда |
| Помилковий | Помилковий | Помилковий | Помилковий | Правда |
Варто запам'ятати дві закономірності. І повертає значення True лише для одного рядка з чотирьох, тому вибірка звужується. OR повертає False лише для одного рядка, тому розширює один. $NOT приймає одну умову, а не дві, тому має окремий стовпець.
VBA Logical OperaПриклад джерела Code
Для простоти ми будемо порівнювати жорстко закодовані числа.
Додайте кнопки ActiveX на аркуш із пункту «Вставити».
Встановіть властивості, як показано на зображенні нижче

У наведеній нижче таблиці показано властивості, які потрібно змінити, а також значення, які потрібно оновити.
| S / N | Контроль | властивість | значення |
|---|---|---|---|
| 1 | CommandButton1 | ІМ'Я | btnAND |
| Підпис | І Operaтор (1 = 1) та (0 = 0) | ||
| 2 | CommandButton2 | ІМ'Я | btnOR |
| Підпис | OR Operaтор (1 = 1) або (5 = 0) | ||
| 3 | CommandButton3 | ІМ'Я | btnNOT |
| Підпис | $NOT Operaтор Не (0 = 0) |
Додайте наступний код до btnAND_Click
Private Sub btnAND_Click() If (1 = 1) And (0 = 0) Then MsgBox "AND evaluated to TRUE", vbOKOnly, "AND operator" Else MsgBox "AND evaluated to FALSE", vbOKOnly, "AND operator" End If End Sub
VBA Якщо І Operaтор
- «Якщо (1 = 1) і (0 = 0) тоді» оператор if використовує логічний оператор AND для поєднання двох умов (1 = 1) і (0 = 0). Якщо обидві умови виконуються, виконується код над ключовим словом "Else". Якщо обидві умови не виконуються, виконується код під ключовим словом "Else".
Обидві умови тут істинні, тому після натискання кнопки відображається «І оцінюється як ІСТИНА».
Додайте наступний код до btnOR_Click
Private Sub btnOR_Click() If (1 = 1) Or (5 = 0) Then MsgBox "OR evaluated to TRUE", vbOKOnly, "OR operator" Else MsgBox "OR evaluated to FALSE", vbOKOnly, "OR operator" End If End Sub
VBA Якщо АБО Operaтор
- «Якщо (1 = 1) Або (5 = 0) Тоді» Оператор if використовує логічний оператор OR для об'єднання двох умов (1 = 1) або (5 = 0). Якщо будь-яка з умов істинна, виконується код, наведений вище за ключовим словом Else. Якщо обидві умови хибні, виконується код, наведений нижче за ключовим словом Else.
Перша умова істинна, а друга — хибна, тому АБО все одно повертає істину, і повідомлення виглядає так: «АБО оцінюється як ІСТИНА».
Додайте наступний код до btnNOT_Click
Private Sub btnNOT_Click() If Not (0 = 0) Then MsgBox "NOT evaluated to TRUE", vbOKOnly, "NOT operator" Else MsgBox "NOT evaluated to FALSE", vbOKOnly, "NOT operator" End If End Sub
VBA Якщо НІ Operaтор
- «Якщо ні (0 = 0), тоді» Функція VBA If Not використовує логічний оператор NOT для заперечення результату умови оператора if. Внутрішня умова (0 = 0) є істинною, тому Not перетворює її на хибну, і виконується код під ключовим словом «Else». Якби внутрішня умова була хибною, Not перетворювала б її на істинну, і замість неї виконався б код над «Else».
Ці три кнопки перевіряють фіксоване значення. Реальні умови зчитуються з робочого аркуша та поєднують обидва сімейства операторів.
Як поєднати логіку та порівняння Operaторс
Виробничий макрос рідко перевіряє жорстко задане число. Він зчитує значення, порівнює його та об'єднує кілька цих порівнянь в одне рішення. Макрос нижче затверджує замовлення лише тоді, коли продукт існує, кількість достатня, а обліковий запис клієнта не заблоковано.
Sub ApproveOrder() Dim QtyOnHand As Long Dim QtyOrdered As Long Dim OnHold As Boolean QtyOnHand = Sheet1.Range("B2").Value QtyOrdered = Sheet1.Range("B3").Value OnHold = Sheet1.Range("B4").Value ' All three parts must hold for the order to pass If (QtyOrdered > 0) And (QtyOnHand >= QtyOrdered) And Not OnHold Then Sheet1.Range("B5").Value = "Approved" Else Sheet1.Range("B5").Value = "On hold" End If End Sub
Три правила забезпечують читабельність та правильність комбінованої умови.
- Закріпіть кожне порівняння у дужках: VBA обчислює оператори порівняння перед логічними, але дужки роблять групуping очевидним та запобігти помилці, коли стан пізніше загостриться.
- Зверніть увагу на пріоритет оператора «І» над оператором «Або»: А або B та C читається як A Або (B та C)Якщо ви мали на увазі (А або Б) та В, дужки обов'язкові.
- Застосувати не до логічного значення, не до числа: Не на утриманні читається природно. Уникайте Не 5, оскільки Not виконує побітову операцію з числами та повертає -6, а не False.
⚠️ Попередження: VBA не створює короткого замикання. У Якщо (ws нічого не дорівнює) або (ws.Name = “Дані”), тоді, друга частина все ще виконується, навіть коли перша є істинною, що викликає помилку виконання 91. Розділіть такі захисні оператори на вкладені оператори If.
XOR, Eqv та Imp Operaтори у VBA
Оператори AND, OR та NOT охоплюють майже всі повсякденні умови, але VBA надає ще три логічні оператори, які іноді виражають правило набагато чіткіше, ніж гніздо операторів If.
| Operaтор | Повертає True, коли | Приклад | Вихід |
|---|---|---|---|
| Xor | Рівно одна з двох умов істинна, ніколи обидві одночасно | (1 = 1) Виключає або (5 = 0) | Правда |
| Екв. | Обидві умови мають однакове значення, обидві істинні або обидві хибні | (1 = 1) Рівняння (2 = 2) | Правда |
| Імп | Перша умова передбачає другу; лише True, Imp, False є false | (1 = 1) Покращено (5 = 0) | Помилковий |
XOR — найпрактичніший з трьох. Він відповідає правилу типу «знижка застосовується до співробітника або учасника програми лояльності, але не до того, хто є і тим, і іншим». Eqv та Imp зустрічаються переважно у старішому коді та в логічних вправах, тому їх розпізнавання важливіше, ніж написання.
Завантажте Excel із кодом вище
