Оператор— это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.
Арифметических операторов в VBA всего 7. Четыре стандартных: сложение (+), вычитание (-), умножение (*), деление (/), и еще три:
□ возведение в степень (^). Например, 2^3 = 8;
□ целочисленное деление (\). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 5\2 = 2;
□ деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1.
Оператор присваивания в VBA — это знак равенства. Можно записывать так:
Let nVar =10
а можно еще проще:
nVar = 10
Здесь не путайте знак равенства с оператором равенства. Последнее выражение означает "присвоить переменной nvar значение 10", а если строка выглядит так:
If (nVar = 10)
то это значит "если значение переменной nVar равно 10".
Если переменной нужно назначить объект, то делается это другими способами.
Операторов сравнения в VBA всего 8:
□ равенство (=). Например, if (nvar = 10);
□ больше, чем (>) и меньше, чем (<). Например, if (nvar > 10);
□ больше или равно (>=) и меньше или равно (<=). Например, if (nvar >= 10);
□ не равно (<>). Например, if (nVar<>10);
□ сравнение объектов (is). Определяет, ссылаются объектные переменные на один и тот же объект или на разные. Например, if (obj1 is obj2);
□ подобие (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон.
Операторы сравнения всегда возвращают True (если утверждение истинно) или False (если утверждение ложно).
Приведем некоторые особенности сравнения строковых значений:
□ при сравнении строковых значений учитывается регистр;
□ пробелы в строковых значениях также учитываются;
□ при сравнении текстовых строк на больше/меньше по умолчанию сравниваются просто двоичные коды символов — какие больше или меньше. Если нужно использовать тот порядок, который идет в алфавите, то нужно воспользоваться командой
Option Compare Text
Общий синтаксис оператора Like выглядит так:
Выражение1 Like Выражение2
При этом Выражение1 — это любое текстовое выражение VBA, а Выражение2 — шаблон, который передается оператору Like. В этом шаблоне можно использовать специальные подстановочные символы (табл. 3.1).
Очень часто при проверке нескольких условий используются логические операторы:
□ And — логическое И. Должны быть истинными оба условия;
□ or — логическое ИЛИ. Должно быть истинным хотя бы одно из условий;
□ Not — логическое отрицание. Возвращает True, если условие ложно;
□ хог — логическое исключение. В выражении El xor E2 возвращает True, если только El = True или только Е2 = True, иначе. — False;
□ Eqv — эквивалентность двух выражений, возвращает True, если они имеют одинаковое значение;
□ Imp — импликация, El Imp E2 возвращает False, если El = True И Е2 = False, иначе — True.
Помнить нужно про And, Or, Not, остальные логические операторы используются редко.
Таблица 3.1. Подстановочные символы для оператора Like
Подстановочный символ
Значение
#
Любая одна цифра от 0 до 9
*
Любое количество любых символов (включая нулевое)
Любой один символ
[а,Ь,с]
Любой один символ из приведенного в квадратных скобках
списка
[!а,Ь,с]
Любой один символ, кроме приведенных в списке
Почти в любой программе VBA используются операторы конкатенации, т. е. слияния строковых значений. В VBA их два— (+) или (&). Рекомендуется всегда использовать оператор (&), потому что:
□ при использовании (&) производится автоматическое преобразование числовых значений в строковые — нет опасности допустить ошибку;
□ при использовании оператора (+) сложение строкового значения со значением типа Null дает Null.
Пример использования оператора (&):
MsgBox "Сообщение пользователю " & vUserName
Порядок применения операторов выглядит так: вначале в выражении вычисляются арифметические операторы, затем операторы конкатенации, следующими идут операторы сравнения и уже в самом конце логические. Если в выражении есть несколько операторов одного типа, то они применяются в обычном порядке — слева направо. При необходимости можно изменять порядок применения операторов при помощи круглых скобок.