Порівняння VBA Operaтори: не дорівнюють, Less ніж або дорівнює
⚡ Розумний підсумок
Порівняння VBA OperaФункції перевіряють одне значення на інше та повертають значення True або False. На цій сторінці визначено шість операторів, показано їх всередині оператора If, пояснено, як порівнюються текст і дати, а також перераховано помилки, які призводять до неправильних результатів.

Порівняння VBA Operaторс
Це оператори, які використовуються для порівняння значень. Оператори порівняння включають дорівнює, менше ніж, більше ніж та не дорівнює.
Оператори порівняння використовуються для порівняння значень з метою перевірки. Припустимо, ви розробляєтеping простий додаток для точки продажу. У цьому додатку вам потрібно перевірити введені значення перед публікацією. У таких випадках ви можете використовувати оператори порівняння. Цей оператор перевірятиме від’ємні числа або гарантуватиме, що сплачена сума не перевищує суму рахунка. Оператори порівняння стають у пригоді в таких ситуаціях.
Кожне порівняння повертає одне з двох значень: True або False, і ніколи не повертає число. Саме на цей результат впливає оператор If.
У наведеній нижче таблиці наведено оператори порівняння, визначені в VBA.
| Operaтор | Опис |
|---|---|
| = | Рівне: перевіряє, чи рівні два значення. Він також використовується як оператор присвоювання |
| < | Less ніж: перевіряє, чи значення ліворуч менше за значення праворуч |
| > | Більше ніж: перевіряє, чи значення ліворуч більше за значення праворуч |
| <> | Не дорівнює: перевіряє, чи два значення відрізняються одне від одного |
| <= | Less ніж або дорівнює: перевіряє, чи значення ліворуч менше або дорівнює значенню праворуч |
| >= | Більше або дорівнює: перевіряє, чи значення ліворуч більше або дорівнює значенню праворуч |
Бачення застосування кожного оператора до двох змінних полегшує прогнозування повернутого результату.
Порівняння VBA Operaтори з прикладом
У наведеній нижче таблиці показано порівняння Excel VBA Operaтори з прикладами та результатом.
| S / N | Operaтор | Приклад | Вихід |
|---|---|---|---|
| 1 | = | Якщо x = z Тоді | Повертає true, якщо вони рівні, інакше повертає false |
| 2 | < | Якщо x < z Тоді | Повертає true, якщо x менше z, інакше повертає false |
| 3 | > | Якщо x > z Тоді | Повертає true, якщо x більше за z, інакше повертає false |
| 4 | <> | Якщо x <> z Тоді | Повертає true, якщо вони не рівні, інакше повертає false |
| 5 | <= | Якщо x <= z Тоді | Повертає true, якщо x менше або дорівнює z, інакше повертає false |
| 6 | >= | Якщо x >= z, тоді | Повертає true, якщо x більше або дорівнює z, інакше повертає false |
Приклад вихідного коду
Рівне порівняння Operaтор
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
ТУТ,
- «Якщо 2 = 1, то… Інакше… Кінець, якщо» використовує оператор if для оцінки умови «2 = 1»
- «ПовідомленняBox... " Це вбудована функція, яка відображає вікно повідомлення.
- Перший параметр «True» або «False» — це те, що відображатиметься у вікні повідомлення. У нашому прикладі 2 не дорівнює 1, тому у вікні повідомлення буде показано «false».
- Другий параметр «vbOKOnly» — це кнопка, яка відображається у вікні повідомлення
- Третій параметр «Рівно Operator» — це заголовок вікна повідомлення.
Виконання наведеного вище коду дає такі результати
Цей єдиний тест є найпростішою формою. Справжні макроси поєднують порівняння та розгалужуються між кількома результатами.
Як використовувати порівняння Operaтори в операторі If
Оператор порівняння рідко буває корисним сам по собі. Його результат «True» або «False» передається до структури прийняття рішення, і найчастіше ви будете використовувати оператор If. У наведеному нижче прикладі оцінюється бал, що зберігається в комірці A1, і поруч із ним записується результат.
Sub GradeScore() Dim Score As Long Score = Sheet1.Range("A1").Value If Score >= 90 Then Sheet1.Range("B1").Value = "Distinction" ElseIf Score >= 50 Then Sheet1.Range("B1").Value = "Pass" ElseIf Score < 0 Then MsgBox "A score cannot be negative", vbCritical, "Invalid Entry" Else Sheet1.Range("B1").Value = "Fail" End If End Sub
Макрос зчитує результат один раз, а потім перевіряє його на відповідність трьом умовам по порядку. Чотири пункти пояснюють, чому він поводиться саме так.
- Порядок має значення: VBA зупиняється на першій гілці, яка повертає True. Оцінка >= 50 перед тим Оцінка >= 90 позначав би кожен високий бал як прохід.
- Інакше це загальний висновок: Будь-яке значення, яке не проходить жодну попередню перевірку, передається методу Else, тому жодне вхідне значення не залишається необробленим.
- Без ланцюжка: VBA не може читати 0 <= Оцінка <= 100. Пишіть Якщо оцінка >= 0 та оцінка <= 100, тоді використання логічні оператори замість цього.
- Той самий тест, інші структури: Ідентична умова керує Do While та Select Case, тому оператори переносяться в кожен цикл, який ви пишете.
💡 Порада: Оголосіть змінну числового типу, як показано на малюнку Dim Score до тих пір, покиЯкщо значення залишається варіантом, що містить текст, «9» > «10» повертає True, оскільки порівняння виконується посимвольно.
Порівняння тексту та дат у VBA
Numbers порівнюйте саме так, як підказує арифметика, але текст і дати підпорядковуються власним правилам, і обидва дивують новачків.
Рядки порівнюються по одному символу за раз, використовуючи їхню позицію сортування, тому «Apple» < «Banana» повертає True. За замовчуванням порівняння чутливе до регістру, що означає «guru99» = «Guru99” повертає False. Розміщення Текст порівняння опцій у верхній частині модуля ігнорує регістр кожного порівняння рядків у цьому модулі. Для однієї перевірки без зміни модуля використовуйте StrComp з аргументом vbTextCompare.
Дати зберігаються у вигляді серійних номерів, починаючи з 30 грудня 1899 року, тому вони порівнюються безпосередньо з тими ж шістьма операторами. Якщо Дата_виконання < Дата, тоді Правильно виявляє прострочений елемент, оскільки Date повертає поточну системну дату у вигляді того ж серійного номера. Єдина пастка — це дата, що зберігається у текстовому форматі: «01/02/2026», прочитана з імпортованого файлу, є рядком, а не датою, і порівнюється в алфавітному порядку. Перетворіть її за допомогою CDate перед тестуванням.
Знання правил для кожного типу усуває більшість несподіванок, але кілька помилок все ж таки трапляються з досвідченими розробниками.
Типові помилки під час порівняння значень у VBA
П'ять наведених нижче проблем пояснюють більшість порівнянь, які повертають неочікуваний результат.
- Завдання помилково прийнято для порівняння: Поза умовою, х = 5 зберігає 5 у x. Усередині оператора If ті самі символи перевіряють рівність. VBA не має окремого оператора ==, тому уважно прочитайте контекст.
- Тестування Double значення для точної рівності: Збережена точність означає, що 0.1 + 0.2 = 0.3 повертає False. Порівняйте, наприклад, округлену різницю. Якщо Abs(a – b) < 0.000001, тоді.
- Порівняння будь-чого з Null: Null не дорівнює нічому, навіть іншому Null. Перевірте з IsNull, а не = Нуль.
- Порівняння тексту з числом: Комірка, що містить текст «100», не дорівнює числу 100. Перетворіть за допомогою CLng або CDbl перед перевіркою.
- Читання .Text замість .Value: Властивість .Text повертає відображене значення, яке скорочується за шириною стовпця та форматуванням. Завжди порівнюйте .Value.
Завантажте вищевказаний Excel Code

