Основы офисного программирования и язык VBA


Сравнение с образцом


Мощным и весьма полезным средством при работе с текстами является операция Like, задающая сравнение с образцом. Необходимость нахождения в наборе всех строк, удовлетворяющих некоторому шаблону (образцу), возникает в самых разнообразных задачах. VBA позволяет решать ее в одну операцию. Приведем таблицу специальных символов, допустимых при задании образца.

Таблица 8.2. Специальные символы, используемые при задании шаблона

СимволыИнтерпретацияПримеры
* Любой текст - произвольное число символов Шаблону Agent* соответствуют все тексты, начинающиеся со слова Agent. Строки Agent007 и Agent Майор Пронин удовлетворяют шаблону.
? Один любой символ Шаблону К?к удовлетворяют, в частности строки Кок и Кук.
# Любая цифра от 0 до 9 Шаблону Agent### соотвествуют 1000 различных строк, среди которых и Agent007, но, конечно же, не Agent Майор Пронин.
[множество_символов] Любой символ, принадлежащий множеству Задать множество можно с помощью перечисления и интервалов. Шаблону К[аоу]к удовлетворяют слова "Как", "Кок", "Кук". Чувствительность к регистру зависит от установки опции Option Compare.
[!множество_символов] Любой не принадлежащий множеству символ Шаблону [!а-я] удовлетворяет символ, не являющийся буквой русского алфавита.

Приведем пример работы с операцией Like:

Public Sub LikeOperation() Const pat1 = "[A-Z]" Const pat2 = "[a-z]" Const pat3 = "[!a-z]" Const pat4 = "[3-5]" Dim res As Byte Dim Sym As String

res = "Кук" Like "К[аоу]к" Debug.Print res

res = "f" Like pat1 Debug.Print res res = "f" Like pat2 Debug.Print res res = "f" Like pat3 Debug.Print res

res = "5" Like pat4 Debug.Print res Sym = "3" res = Sym Like pat1 & pat4 Debug.Print res res = Sym Like pat1 Or Sym Like pat4 Debug.Print res

End Sub

Пример 8.1.

Вот результаты отладочной печати:

255 0 255 0 255 0 255

Обратите внимание на последние два результата, демонстрирующие некорректный и корректный способы работы с объединением множеств проверяемых символов.




Начало  Назад  Вперед



Книжный магазин