Операторы сравнения 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