Порівняння VBA Operaтори: не дорівнюють, Less ніж або дорівнює

⚡ Розумний підсумок

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

  • 🇧🇷 Мета: Оператори порівняння перевіряють дані, перевіряючи умову, яка має значення True або False.
  • 🔢 Шість Operaторс: Дорівнює, менше ніж, більше ніж, не дорівнює, менше ніж або дорівнює та більше ніж або дорівнює.
  • 🔁 Подвійна роль: Знак рівності порівнює всередині умови та присвоює значення поза нею.
  • 🧪 Оператор If: Кожне порівняння розміщується всередині If, ElseIf або Do While, щоб контролювати, який код виконується.
  • 🔤 Текст і дати: Рядки порівнюються посимвольно, а дати порівнюються як серійні номери.
  • ⚠️ Прецизійна пастка: Два Double Значення, які виглядають однаковими, можуть не пройти тест на рівність, тому порівнюйте округлену різницю.

Порівняння VBA Operaторс

Порівняння 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» — це заголовок вікна повідомлення.

Виконання наведеного вище коду дає такі результати

Equal Operaтор

Цей єдиний тест є найпростішою формою. Справжні макроси поєднують порівняння та розгалужуються між кількома результатами.

Як використовувати порівняння 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

Поширені запитання

Ні. VBA оцінює перше порівняння як True або False, а потім порівнює цей результат з 10, що дає оманливу відповідь. Напишіть два тести окремо та об'єднайте їх за допомогою оператора And.

Like порівнює рядок зі шаблоном, а не з точним значенням. Символи підстановки включають зірочку для будь-яких символів та знак питання для одного символу, тому «Guru99” Як «Guru*” повертає True.

Використовуйте оператор Is, як у If ws Is Nothing Then. Знак рівності порівнює значення, тоді як Is перевіряє, чи дві змінні об'єкта вказують на один і той самий об'єкт, що є єдиною дійсною перевіркою для об'єктів.

Так. Опишіть правило простими словами, наприклад, позначте будь-яке замовлення вище 500, розміщене до сьогоднішнього дня, і помічник штучного інтелекту поверне відповідну умову If. Перевірте граничні значення, перш ніж довіряти йому.

Так. Вставте блок If та помічника зі штучним інтелектом. tracяка гілка перехоплює кожне значення, а потім вказує на недосяжний ElseIf або порівняння між текстом і числом. Підтвердьте виправлення крок за крокомping через код.

Підсумуйте цей пост за допомогою: