Выражения
Для выполнения вычислений и других манипуляций в VBA используются выражения. Выражение - это любая комбинация операндов или элементов данных (чисел, констант, переменных, функций и других операндов) и знаков операций.
Операнды (operands) в программировании - это объекты, над которыми выполняют определенные действия (операции).
Знаки операций - это символы, которые используют для соединения операндов в выражении.
Операции в VBA - это действия, которые производят над операндами. Знаки операций в выражении имеют свои приоритеты.
Выражения могут состоять из одного операнда, а могут состоять из комбинации операндов и знаков операций. Результатом вычисления выражения является значение, которое должно иметь допустимый в VBA тип данных.
Отметим, что в одном выражении нельзя использовать несовместимые типы данных.
Оператор - это наименьшая исполняемая единица программного кода VBA. Различают операторы выражения, операторы объявления, операторы присваивания, условные операторы и т.д. Операторы выражений - это процедуры или строка в тексте исполняемого кода программы. Операторы выражений выполняют какие-либо действия в программе.
Операции
К операциям, которые используются для записи выражений в VBA, относят:
- операции присваивания;
- математические операции;
- логические операции;
- операции сравнения (отношений);
- операции для работы со строками (строковые операции).
Операция присваивания
Когда мы в программе объявляем переменную, происходит связывание имени этой переменной с областью памяти, в которой будет храниться ее значение, которое, в свою очередь, после объявления может оказаться произвольным. Возникает необходимость присвоения переменной нужного значения, для этого используем операцию присваивания, назначающую результат вычисления выражения переменной, константе или же свойству объекта. В операции присваивания всегда используют знак равенства =.
Синтаксис данной операции имеет вид:
ИмяПеременной = Выражение
где:
- Имя_Переменной – имя переменной (идентификатор);
- Символ «=» – знак операции присваивания;
- выражение – значение (число), комбинация переменных, констант, функций, связанных знаками операций.
Операция присваивания предписывает выполнить выражение, заданное в его правой части, и присвоить результат имени переменной, имя которой указано в левой части.
Для присваивания переменной ссылки на объект применяется инструкция Set. В общем случае инструкция Set имеет следующий синтаксис:
$Set objectvar = [New] objectexpression [Nothing]$
где:
- New– ключевое слово, которое используется при создании нового экземпляра объекта;
- Nothing– позволяет освободить все системные ресурсы и ресурсы памяти, выделенные для объекта, на который имелась ссылка (т.е. она удаляет объект из памяти).
Математические операции
Математические операторы - это ничто иное, как инструкции, в которых используют математические операции.
В VBA используются следующие математические операции: сложение (+), вычитание (-), умножение (*), деление (/), деление без остатка (), остаток от деления по модулю (mod), возведение в степень (^).
При этом каждая операция имеет свой приоритет, или как его еще называют ранг. Операции 1 ранга будут иметь наивысший приоритет и в программном операторе выполнятся первыми. Операции одного ранга в выражениях выполняются согласно правил ассоциативности (слева направо или наоборот). Так операцией 1 ранга будет являться выражение, заключенное в скобки (), 2 приоритет имеет операция вызова функции, 3 – операция возведения в степень (^) и так далее, самый низший приоритет 12 имеет операция Or.
Оператор сложения (+)
С помощью этого оператора выполняют простое сложение. При этом оба операнда – это численные выражения или строки, которые можно преобразовать в число. Оператор сложения также используется при выполнении математических операций с данными типа Date.
Тип данных результата выражения сложения, как правило, такой же, как и наиболее точный тип в этом выражении. Но, встречаются и исключения:
- при сложении типов Single и Long результатом станет тип Double;
- при сложении типа Date с любым другим типом данных результат всегда будет иметь тип Date;
- при превышении результатом диапазона типа Integer, его преобразуют в тип Long;
- при превышении результатом типов Long, Single, Date, его преобразуют в тип Double;
- если любой операнд в выражении сложения будет иметь тип Null, то и результат выражения сложения также будет иметь тип Null.
Оператор вычитания (-)
Данный оператор выполняет две задачи:
- используется при вычитании одного числа из другого;
- обозначает унарный минус (это знак минус, который помещается перед отрицательным числом).
Поместить унарный минус перед переменной или выражением означает то же, что умножить это число на -1. Оба операнда в выражении вычитания должны быть численными переменными (выражениями) или строковыми выражениями, которые можно преобразовать в число. Данный оператор можно использовать для работы с датами.
VBA использует те же правила для определения типа данных результата выражения вычитания, что и для выражений, использующих оператор сложения. Но, есть дополнение: если оба операнда в выражении являются типом Date, то результат выражения будет иметь тип Double.
Оператор умножения (*)
Данный оператор перемножает два числа – результатом выражения умножения является произведение двух операндов. Оба операнда в выражении умножения должны быть численными выражениями или строками, которые можно преобразовать в число.
VBA следует тем же правилам для определения типа данных результата выражения умножения, что и для выражений, использующих оператор сложения. В выражениях умножения все переменные Variant, которые содержат значения типа Date, преобразуются в численные значения.
Оператор деления (/)
Оператор деления с плавающей точкой выполняет обычное математическое деление своих операндов. В выражениях деления первый операнд делится на второй и результатом деления является частное.
Оба операнда в выражении деления с плавающей точкой должны быть численными выражениями или строками, которые можно преобразовать в число. Если хотя бы один операнд в выражении деления будет иметь тип Null, то результат деления также будет иметь тип Null.
Типом данных операции деления с плавающей точкой является Double, за исключением случаев, когда:
- оба операнда в выражении деления имеют типы Integer или Single – результат будет иметь тип Single;
- результат выражения не переполняет диапазон значений для типа Single.
Целочисленное деление ()
Целочисленное деление отличается от деления с плавающей точкой тем, что его результатами всегда являются целые числа без дробной части, численными выражениями или строки, которые можно преобразовать в число. Перед выполнением операции целочисленного деления каждый операнд округляется до числа типа Integer или Long. VBA отбрасывает (но не округляет!) любой дробный остаток результата выражения целочисленного деления. Например, выражения 22\5 и 24\5 будут иметь один и тот же результат = 4. Если хотя бы один операнд в выражении целочисленного деления имеет тип Null, то результат деления также будет иметь тип Null.
Деление по модулю (Mod)
Деление по модулю как бы дополняет целочисленное деление. В делении по модулю выражение возвращает только остаток операции деления как целое. 22 Mod 5 = 4 24 Mod 5 = 8 25 Mod 5 = 0
Остальные свойства деления по модулю идентичны целочисленному делению.
Возведение в степень (^)
Оператор возведения в степень возводит число в степень.
5 ^ 3 =125
Оба операнда в выражении возведения в степень должны быть численными выражениями или строками, которые можно преобразовать в числа. Операнд слева от оператора возведения в степень может быть отрицательным числом только, если операнд справа является целым.
Результат выражения имеет тип Double. Если хотя бы один операнд в выражении имеет тип Null, то результат возведения в степень также будет иметь тип Null.
Логические операции
Логические операции используются в логических выражениях. Если существует несколько условий выбора в операциях отношения, то эти операции связываются между собой логическими операциями.
Логические выражения имеют значение типа Boolean, которое принимает одно из двух логических значений: True (1) или False (0). При выполнении логических операций логическим переменным присваивается результат вычислений, указанный в правой части операторов. К логическим операциям относятся: and, or, nod, xor, eqv, imp (логическое и, или, нет, логическое исключающее или, логическая эквивалентность, логическая импликация). Например,
(9 > 8) Or (2 > 5). Результат является True (истина), так как одно из условий является True.
Операции сравнения (отношений)
В отличие от математических операций, результатом выполнения которых может быть любое значение, операция отношения может иметь только два результирующих значения – True (Истина) и False (Ложь), которые могут быть присвоены переменным типа Boolean или определенному свойству объекта. Операции отношения применяются для записи выражений условия, результатом выполнения которых являются значения True(Истина) или False(Ложь).
В операторах могут применяться с определенным синтаксисом следующие знаки операций сравнения: равенство (=), больше чем ( > ) и меньше чем (=) и меньше или равно ( > =) и меньше или равно ( > =) и меньше или равно.