VBA дозволяє використовувати логічні оператори І, Або, Ні, Xor порівнювати значення. Оператори вважаються "булевими", що означає, що вони в результаті повертають True або False.
Якщо ви хочете дізнатися, як порівнювати рядки, натисніть тут: VBA Порівняти рядки - StrComp
Якщо ви хочете дізнатися, як використовувати оператори порівняння, натисніть тут: Оператори порівняння VBA - не дорівнює & Більше
За допомогою логічного оператора And
The І логічний оператор порівнює дві або більше умов. Якщо всі умови відповідають дійсності, оператор поверне True. Якщо хоча б одна з умов не відповідає дійсності, оператор поверне False. Ось приклад:
123456789101112 | Dim intA як ціле числоDim intB як ціле числоDim blnРезультат БулевоintA = 5intB = 5Якщо intA = 5 і intB = 5 ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити Якщо |
У цьому прикладі ми хочемо перевірити, чи обидва intA та intB дорівнюють 5. Якщо це правда, значення булевого значення blnResult буде істиною, інакше - помилкою.
Спочатку ми встановлюємо значення intA та intB до 5:
12 | intA = 5intB = 5 |
Після цього ми використовуємо І оператор у операторі If, щоб перевірити, чи рівні значення 5:
12345 | Якщо intA = 5 і intB = 5 ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити Якщо |
Оскільки обидві змінні рівні 5, blnResult повертає True:
Зображення 1. Використання логічного оператора And у VBA
Використання або логічного оператора
The Або логічний оператор порівнює дві або більше умов. Якщо хоча б одна з умов відповідає істині, вона поверне Істину. Якщо жодна з умов не відповідає дійсності, оператор поверне False. Ось код для прикладу:
123456789101112 | Dim intA як ціле числоDim intB як ціле числоDim blnРезультат БулевоintA = 5intB = 10Якщо intA = 5 або intB = 5 ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити Якщо |
У цьому прикладі ми хочемо перевірити, чи обидва intA дорівнює 5. або intB дорівнює 10. Якщо будь -яка з цих умов істинна, значення булевого значення blnResult буде істиною, інакше - помилкою.
Спочатку ми встановлюємо значення intA до 5 і intB до 10:
12 | intA = 5intB = 10 |
Після цього ми використовуємо Або оператор у операторі If, щоб перевірити, чи одне із значень дорівнює 5:
12345 | Якщо intA = 5 або intB = 5 ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити Якщо |
Як intA значення 5, blnResult повертає True:
Зображення 2. Використання логічного оператора Or у VBA
Використання нелогічного оператора
The Ні логічний оператор перевіряє одну або кілька умов. Якщо умови відповідають дійсності, оператор повертає false. В іншому випадку він повертає True. Ось код для прикладу:
12345678910 | Dim intA як ціле числоDim blnРезультат БулевоintA = 5Якщо ні (intA = 6), тоblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити Якщо |
У цьому прикладі ми хочемо перевірити, чи є значення intA не дорівнює 6. Якщо intA відрізняється від 6, значення булевого значення blnResult буде істиною, інакше - помилкою.
Спочатку ми встановлюємо значення intA до 5:
1 | intA = 5 |
Після цього ми використовуємо оператор Not у операторі If, щоб перевірити, чи значення intA відрізняється від 6:
12345 | Якщо ні (intA = 6), тоblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити Якщо |
Як intA значення 5, blnResult повертає True:
Зображення 3. Використання оператора Not logic у VBA
Використання логічного оператора Xor
The Xor логічний оператор порівнює дві або більше умов. Якщо точно одна з умов відповідає істині, вона поверне Істину. Якщо жодна з умов не відповідає дійсності або більше одного не відповідає дійсності, вона повертає false. Ось код для прикладу:
123456789101112 | Dim intA як ціле числоDim intB як ціле числоDim blnРезультат БулевоintA = 5intB = 10Якщо intA = 5 Xor intB = 5 ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити Якщо |
У цьому прикладі ми хочемо перевірити, чи точно одне з значень (intA або IntB) дорівнює 5. Якщо істинна лише одна умова, значення логічного значення blnResult буде істиною, інакше - помилкою.
Спочатку ми встановлюємо значення intA до 5 і intB до 10:
12 | intA = 5intB = 10 |
Після цього ми використовуємо Або оператор у операторі If, щоб перевірити, чи одне із значень дорівнює 5:
12345 | Якщо intA = 5 Xor intB = 5 ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити Якщо |
Як intA значення 5 і intB становить 10, blnResult повертає True:
Зображення 4. Використання логічного оператора Xor у VBA
Є оператором
Оператор Is перевіряє, чи дві змінні об'єкта зберігають один і той же об'єкт.
Розглянемо приклад. Тут ми призначимо два аркуші об’єктам аркуша rng1 та rng2, перевіривши, чи об’єкти двох аркушів зберігають один і той же аркуш:
12345678910111213 | Sub CompareObjects ()Dim ws1 як робочий аркуш, ws2 як робочий аркушВстановити ws1 = Аркуші ("Аркуш1")Встановити ws2 = Аркуші ("Аркуш2")Якщо ws1 є ws2 ТодіПовідомлення "Те саме WS"ІнакшеMsgBox "Різні WS"Закінчити ЯкщоEnd Sub |
Звичайно, об’єкти аркуша не однакові, тому повертається “Різні WS”.
Як оператор
Оператор Like може порівняти два рядки для неточних збігів. У цьому прикладі буде перевірено, чи починається рядок з "Mr."
1234567891011121314 | Sub LikeDemo ()Dim strName As StringDim blnРезультат БулевоstrName = "Містер Майкл Джеймс"Якщо strName як "Mr*" ТодіblnResult = ПравдаІнакшеblnResult = НеправдаЗакінчити ЯкщоEnd Sub |