Базовые типы данных и операции над ними, страница 11

strVar Like "Д*ь"

имеет значение True, если строка strVar имеет значение "День", "Дождь", "Дурень" и т.д., т.е. любое слово, начинающееся на букву «Д» и заканчивающееся на букву «ь». Следующее выражение:

strVar Like "к?т"

имеет значение True, если в строке strVar записано "кит"  или "кот", но не "компот".

Группа из одного и более символов, заключенная в квадратные скобки «[]» может использоваться для поиска одного из них в строке, и может состоять из любых символов, включая цифры. Тогда следующее выражение:

strVar Like "аб[вг]"

имеет значение True, если в строке strVar записано "абв"  или "абг". А такое выражение:

strVar Like "м[!а]л"

имеет значение True, если строка strVar имеет значение "мел"  или "мол" или нечто похожее, но не "мал".

В квадратных скобках можно указывать также диапазон значений символов, с которыми требуется совпадение или, наоборот, их отсутствие в строке. Тогда:

StrVar Like "[а-ж]очка"

StrVar Like "[!а-ж]очка"

первое выражение имеет значение True, если строка strVar содержит "дочка" или "бочка", но не "кочка", а второе, наоборот, имеет значение True, если в ней записано "кочка" или "мочка" и False – если "дочка" или "бочка". При указании диапазона символов в квадратных скобках необходимо следить за тем, чтобы сначала стоял «меньший» символ, а потом – «больший». Например, следующее выражение [а-я] правильное, а [я-а] – нет. Пустая пара квадратных скобок воспринимается как пустая строка нулевой длины, т.е. игнорируется.

Для того чтобы найти в строке один из специальных символов «#», «*», «?» и «[», его необходимо заключить в квадратные скобки. Например, наличие символа «*» в строке strVar можно проверить с помощью такого выражения:

StrVar Like "*[*]*"

Правая квадратная скобка «]» и восклицательный знак «!» тоже имеют специальное значение, и для того чтобы включить их в образец поиска, их, наоборот, необходимо записывать вне квадратных скобок. Например, для поиска восклицательного знака в конце строки используется такое выражение:

StrVar Like "*!"

Для поиска символа дефиса «-» его следует поместить в начале или в конце строки образца, поскольку, будучи помещенным в середине, он будет означать диапазон символов.

Конкатенация – это операция объединения (слияния) двух текстовых строк в одну, более длинную. В качестве символа оператора конкатенации используется или символ «&» или символ «+». Символ конкатенации «+» в VBA «пришел» из BASIC, и используется, в основном, для совместимости с предыдущими версиями. Действие этих знаков совершенно одинаково, за исключением случая, когда операнды содержат значения, которые могут быть преобразованы в числа. Оператор «&» выполняет при этом конкатенацию, а «+» – арифметическое сложение. Например, в результате выполнения такой процедуры:

1: Sub TestConcatenate()

2:    Var1 = 12 & "34"

3:    Var2 = Var1 & " типа " & TypeName(Var1)

4:    MsgBox Var2, , "Первый результат"

5:    Var1 = 12 + "34"

6:    Var2 = Var1 & " типа " & TypeName(Var1)

7:    MsgBox Var2, , "Второй результат"

8: End Sub

будут получены следующие результаты:

Первый из них является результатом того, что левый операнд 12 в строке 2 имеет тип данных Integer, во время выполнения операции конкатенации «&» преобразовывается в тип String, и результат «1234» при этом тоже имеет тип String. Второй результат является следствием того, что при оценке второго выражения (строка 5) будет использована операция арифметического сложения, а не конкатенация, и поэтому, наоборот, правый операнд "34" будет преобразован к типу данных Double. Результат операции тоже будет иметь тип Double. Строки 3 и 6 – наиболее типичное использование операции конкатенация – слияние нескольких строк в одну. Полученные таким образом текстовые строки, в строках 4 и 7 процедуры TestConcatenate с помощью функций MsgBox выводятся в соответствующие окна сообщений. Используемая в процедуре функция TypeName возвращает в виде значения типа String имя типа единственного своего параметра, в качестве которого может быть использовано любое выражение VBA.

Поскольку символ амперсанд «&» в VBA используется и для обозначения оператора конкатенации, и для указания значения типа Long, то для устранения этой неоднозначности хорошей практикой программирования является отделение оператора от операндов, по крайней мере, одним пробелом. Если же, например, в строке 2 процедуры TestConcatenate не отделить символ амперсанда «&» от числа 12, то последнее будет воспринято как значение тип Long, а вся инструкция – как не соответствующая синтаксису, с выдачей соответствующего сообщения.

Логические операторы служат для построения логических выражений. В качестве операндов могут использоваться только значения типа Boolean. Типом логического выражения также является Boolean. Далее приведен полный список логических операторов VBA:

And

– конъюнкция (И),

Or

– дизъюнкция (ИЛИ),

Not

– отрицание (НЕ),

Xor

– исключающая дизъюнкция (исключающее ИЛИ),

Eqv

– эквивалентность,

Imp

– импликация.

Оператор And выполняет логическую операцию конъюнкция (И). Значение выражения будет True тогда и только тогда, когда его оба операнда будут иметь значение True.

Оператор Or выполняет логическую операцию дизъюнкция (ИЛИ, включающее ИЛИ). Значение выражения будет True тогда и только тогда, когда хотя бы один из его операндов будет иметь значение True.

Оператор Not унарный, и выполняет логическую операцию отрицание (НЕ). Он инвертирует значение своего единственного операнда – если операнд имеет значение True, то все выражение будет иметь значение False, и наоборот, если операнд имеет значение False, то всё выражение – True.