Оператори порівняння VBA

Оператори порівняння в VBA. Урок №23

За допомогою операторів порівняння визначають чи рівні значення у виразі і як вони відрізняються якщо не рівні.

Результатом виконання будь-якого оператора порівняння є значення типу BooleanTrue (Істина), або False (Брехня).

Оператори порівняння VBA

Оператор Назва Синтаксис Опис
= Дорівнює a = b Якщо а дорівнює b тоді True. Інакше – False.
> Більше a > b Якщо a більше b тоді True. Інакше – False.
< Меньше a < b Якщо a меньше b тоді True. Інакше – False.
>= Більше або дорівнює a >= b Якщо a більше або дорівнює b тоді True. Інакше – False.
<= Меньше або дорівнює a <= b Якщо a меньше або дорівнює b тоді True. Інакше – False.
<> Не дорівнює a <> b Якщо a не дорівнює b тоді True. Інакше – False.
Is Порівняння двох операндів, що містять посилання на об'єкти obj1 Is obj2 Якщо обидва вирази типу Object посилаються на той самий об'єкт, тоді True. Інакше – False.
IsNot Порівняння двох посилальних змінних об'єктів obj1 IsNot obj2 IsNot є протилежністю оператора Is.
Like Порівняння двох рядкових виразів ryadok1 Like rydok2 Використовується для порівняння строкових виразів за заданим шаблоном.

Що потрібно знати про порівняння в VBA

Якщо у виразі порівняння обидва операнди мають один і той же тип даних, то буде виконано просте порівняння для цього типу.

Якщо у виразі порівняння один або обидва операнда є змінними типу Variant, то компілятор спробує перетворити тип Variant на якийсь із сумісних типів даних для виконання порівняння. Якщо це не вийде, то на екран буде виведено повідомлення про помилку часу виконання.

Якщо у виразі порівняння обидва операнди мають певні типи і ці типи не сумісні між собою, компілятор виведе на екран повідомлення про помилку розбіжності типів.

Порівняння рядків в VBA

Оператори порівняння можна використовувати як для числових, так і для рядкових значень.

При порівнянні рядків в VBA, компілятор послідовно порівнює кожен символ зліва направо. Старшинство символів визначається відповідно до алфавітного порядку (для літер), і відповідно до двійкового значення коду ASCII (для будь-яких інших символів).

Якщо обидва рядки мають однакову довжину, містять однакові символи і ці символи розташовані однаково, то такі рядки є рівними. Тобто результат їхнього порівняння буде True. У будь-якому іншому випадку, результат порівняння рядків буде False.

Приклад

Sub myCode()
    a = "myText" = "myText"
    MsgBox (a)
End Sub

Приклад

Sub myCode()
    a = "myText" = "mytext"
    MsgBox (a)
End Sub

Символи різних регістрів в VBA можна порівнювати двома способами:

  1. Порівняння рядків у двійковому форматі. Цей метод використовується за замовчуванням. При його використанні для аналізу використовується двійковий еквівалент кожного символу. Літери нижнього регістра мають більший двійковий код, ніж літери верхнього регістру. Наприклад, у виразі "b" > "B" результат буде True, тому що двійковий код символу маленької літери b (символу нижнього регістру) більше ніж двійковий код символу великої літери B (символу верхнього регістра).
  2. Порівняння рядків у текстовому режимі. Цей метод передбачає порівняння за абеткою без урахування регістру букв. При такому способі порівняння, рядок "MYTEXT" дорівнюватиме рядку "mytext".

Для того, щоб встановити текстовий режим порівняння рядків для певного модуля, потрібно на початку цього модуля, перед процедурами і змінними, помістити оператор Option Compare Text.

Приклад порівняння рядків у текстовому режимі

Option Compare Text
Sub myCode()
    a = "MyText" = "mytext"
    MsgBox (a)
End Sub

Порівняння одного рядка з іншим за шаблоном: Оператор Like

Оператор Like порівнює рядок із заданим шаблоном. Він повертає значення True, якщо при порівнянні двох рядків у рядку 1 знайдено слово або фраза, що відповідають заданому шаблону.

Спеціальні символи шаблона для оператора Like

Символ Відповідність
? Відповідає будь-якому одному (окремому) символу.
* Відповідає будь-якій кількості символів у будь-якій комбінації (0 і більше символів).
# Відповідає будь-якій одній цифрі від 0 до 9.
(List) List – це список певних символів. Для позначення діапазону використовується знак дефісу (-). Відповідає збігу з будь-яким одиночним символом у списку.
(!List) Відповідає будь-якому символу, що не входить до списку (List).

Приклад порівняння рядка із заданим шаблоном

a = "вісім" Like "сім"  'результат False
a = "вісім" Like "*сім"  'результат True
a = "Слава Україні!" Like "Слава"  'результат False
a = "Слава Україні!" Like "Слава*"  'результат True
a = "Доброго вечора, ми з України!" Like "ми"  'результат False
a = "Доброго вечора, ми з України!" Like "*ми*"  'результат True

Порівняння посилань на об'єкти: Оператор Is

Оператор Is використовують для порівняння змінних, що містять посилання на об'єкти.

Якщо обидві змінні типу Object посилаються на один і той самий об'єкт, тоді результат буде True. У будь-якому іншому випадку, результат буде False.

Приклад 1

Set myObj1 = ThisWorkbook
Set myObj2 = Sheets(1)
Set myObj3 = myObj1
Set myObj4 = Sheets(1)
a = myObj1 Is myObj2 'результат False
a = myObj1 Is myObj3 'результат True
a = myObj2 Is myObj4 'результат True

Приклад 2

Set myObj1 = Range("A1")
Set myObj2 = Range("A1")
Set myObj3 = myObj1
a = myObj1 Is myObj2 'результат False
a = myObj1 Is myObj3 'результат True

Main Menu