Like – оператор в VBA, это оператор сравнения, который сравнивает заданную строку в качестве аргумента с набором строк и сопоставляет с образцом, если образец совпадает, то полученный результат будет истинным, а если образец не совпадает, то полученный результат будет ложным, это встроенный оператор в VBA.
Оператор является одним из самых малоиспользуемых, несмотря на его замечательное применение. Like позволяет нам сопоставить шаблон строки с полной строкой. Используя его, мы можем сравнить две строки по заданному шаблону.
При сопоставлении строк нам необходимо использовать символы подстановки в заданную нами шаблонную форму. Ниже приведены символы подстановки, которые используются в VBA:
Вопросительный знак (?): Используется для поиска любого одного символа из строки. Например, если у нас есть строка “Кот”, а шаблон – “К?т”, то оператор Like возвращает TRUE. Если строка – “Кр?т”, а шаблон – “К?т”, то оператор Like возвращает FALSE.
Звездочка (*): Совпадает с нулем или более символов. Например, если строка – “Excel”, а шаблон – “E*el”, оператор возвращает TRUE.
Скобки ([]): Совпадает с любым одним символом, указанным в скобках.
Решетка (#): Совпадает с любой цифрой (0-9).
Пример использования шаблона
Пример №1. Поиск цифр
Допустим, мы хотим отметить все ячейки, содержащие в начале значения цифру и отмечать в соседней ячейке 1, если ячейка удовлетворяет этому условию.
Для решения этой задачи следует написать простой код:
Sub Exmpl()
Dim myC As Range
For Each myC In Range(Cells(1, 1), Cells(4, 1))
If myC Like "#*" Then myC.Offset(, 1).Value = 1
Next myC
End Sub
В этом примере используется шаблон “#*”, # обозначает, что первый символ должен быть цифрой, а * означает, что после первого символа могут следовать любое количество любых символов.
Пример №2. Поиск по скобкам и алфавиту [А-Я]
Допустим, нам нужно узнать, есть ли буквы К, Л, М, Н, О в сообщении “Привет!”. Если буквы есть, то мы выведем на экран сообщение “Да”, иначе появится сообщение “Нет”. Код для этой задачи будет следующим:
Sub Exmpl2()
Dim sMsg As String
sMsg = "Привет!"
If sMsg Like "*[К-О]*" Then
MsgBox "Да"
Else
MsgBox "Нет"
End If
End Sub
Шаблон “*[К-О]*” читается так: после любого количества символов (даже если символов не будет вовсе), стоит буква алфавита К, Л, М, Н, О (вне зависимости от регистра), после буквы следует любое количество любых символов.