АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫ VBA

Оператор присваивания (=)

Оператор присваивания используется для присваивания результата выражения переменной.

Операция присваивания имеет две синтаксические формы:

varname = expression

varname- любая переменная VBA

expression - любое выражение VBA

 

При выполнении оператора присваивания VBA сначала вычисляет выражение справа от оператора присваивания, а затем сохраняет результат выражения в переменной, имя которой находится слева от знака равенства.

 

X = 5 + 7; Y = X + 5 ; Z = X - Y; A = B; I = I + 1

 

Начинающим пользователям иногда непонятен смысл последней операции присваивания, когда и в левой, и в правой частях операции стоит одна и та же переменная. В этом случае сначала в промежуточную ячейку памяти помещается результат вычисления выражения правой части оператора присваивания, а затем этот результат присваивается переменной в левой части.

Например, если в операторе присваивания А = А +5, переменная А до операции присваивания содержала значение 7, то после операции она будет содержать значение 12 (7+5).

Следует запомнить:

· Можно присваивать любую численную переменную (или выражение) любой другой переменной численного типа (или переменной типа Variant);

· Если присваивается численное выражение типизированной переменной с меньшей точностью (например, Double - Long), VBA округляет значение выражения для совпадения с точностью переменной, принимающей новое значение;

· Если переменной типа String присваивается переменная типа Variant, содержащая число, VBA автоматически преобразует это число в строку.

Оператор сложения (+)

Оператор сложения выполняет простое сложение. Оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число. Оператор сложения можно также использовать для выполнения арифметических операций с данными типа Date.

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

· Результатом сложения типа Single и Long будет Double;

· Результатом сложения типа Date с любым другим типом данных всегда будет Date;

· Если результат превышает диапазон типа Integer, то VBA преобразует его в Long;

· Если результат превышает типы Long, Single, Date, то VBA преобразует его в Double;

· Если любой операнд в выражении сложения является Null, то результатом выражения сложения также будет Null.

Напомним порядок увеличения точности для численных типов данных: Byte, Integer, Long, Single, Double, Currency.

Следует сказать, что надо четко понимать как VBA преобразует типы данных в результате арифметических операций. Это поможет в дальнейшем избежать многих "ненужных" ошибок при написании кода.

Оператор вычитания (-)

Оператор вычитания выполняет две задачи: используется для вычитания одного числа из другого; обозначает унарный минус (это знак минус, который помещается пред числом для указания того, что это отрицательное число). Поместить унарный минус перед переменной или выражением означает то же, что умножить это число на -1.

Оба операнда в выражении вычитания должны быть численными переменными (выражениями) или строковыми выражениями, которое VBA может преобразовать в число. Можно использовать оператор вычитания для работы с датами.

VBA использует те же правила для определения типа данных результата выражения вычитания, что и для выражений, использующих оператор сложения. Но, есть дополнение:

· Если оба операнда в выражении являются типом Date, то результат выражения будет иметь тип Double.

Оператор умножения (*)

Оператор умножения перемножает два числа - результатом выражения умножения является произведение двух операндов. Оба операнда в выражении умножения должны быть численными выражениями или строками, которые VBA может преобразовать в число.

VBA следует тем же правилам для определения типа данных результата выражения умножения, что и для выражений, использующих оператор сложения. В выражениях умножения все переменные Variant, которые содержат значения типа Date, преобразуются в численные значения.

Оператор деления (/)

Оператор деления с плавающей точкой выполняет обычное арифметическое деление своих операндов.

В выражениях деления первый операнд делится на второй операнд - результатом деления является частное.

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

Если хотя бы один операнд в выражении деления имеет тип Null, то результат деления также будет Null.

Типом данных операции деления с плавающей точкой является Double, за исключением:

Оба операнда в выражении деления имеют тип Integer или Single - результат Single;

Если результат выражения не переполняет диапазон значений для типа Single.

Целочисленное деление (\)

Целочисленное деление отличается от деления с плавающей точкой тем, что его результатом всегда есть целое число без дробной части.

Оба операнда в выражении целочисленного деления должны быть численными выражениями или строками, которые VBA может преобразовать в число.

Перед выполнением операции целочисленного деления VBA округляет каждый операнд до числа типа Integer или Long (такой же тип имеет и результат целочисленного деления).

VBA отбрасывает (но не округляет!) любой дробный остаток результата выражения целочисленного деления. Например, выражения 22\5 и 24\5 будут иметь один и тот же результат = 4.

Если хотя бы один операнд в выражении целочисленного деления имеет тип Null, то результат деления также будет Null.

Деление по модулю (Mod)

Деление по модулю как бы дополняет целочисленное деление. В делении по модулю выражение возвращает только остаток операции деления как целое.

 

22 Mod 5 = 2

24 Mod 5 = 4

25 Mod 5 = 0

Остальные свойства деления по модулю идентичны целочисленному делению.

Возведение в степень (^)

Оператор возведения в степень возводит число в степень.

 

5 ^ 3 =125

 

Оба оператора в выражении возведения в степень должны быть численными выражениями или строками, которые VBA может преобразовать в числа.

Операнд слева от оператора возведения в степень может быть отрицательным числом только, если операнд справа является целым.

Результат выражения имеет тип Double.

Если хотя бы один операнд в выражении имеет тип Null, то результат возведения в степень также будет Null.

Подведем итог вышеизложенному:

 

Оператор Синтаксис Описание
+ A + B Сложение: складывает А и В.
- A - B Вычитание: вычитает из А В.
* A * B Умножение: перемножает А на В.
/ A / B Деление: делит А на В.
\ A \ B Целочисленноеделение: делит А на В, отбрасывая дробную часть. Результат - целое число.
Mod A Mod B Делениепо модулю: делит А на В, возвращая только остаток операции деления как целое число.
^ A ^ B Возведение в степень: возводит А в степень В.

 

 

ЛОГИЧЕСКИЕ ОПЕРАТОРЫ VBA

Оператор Синтаксис Описание
AND A AND B Конъюнкция: Если А и В имеют значение True, то - True. Иначе - False
OR A OR B Дизъюнкция: Если любой из операндов имеет значение True, то - True. Иначе - False
NOT NOT A Отрицание: Если А имеет значение False, то - True. Иначе - False
XOR A XOR B Исключение: Если А имеет значение True или В имеет значение True, то - True. Иначе - False
EQV A EQV B Эквивалентность: Если А имеет такое же значение что и В, то - True. Иначе - False

 

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

Результатом логической операции является значение типа Boolean (или Null, если хотя бы один из операндов имеет значение Null).

 

Логический оператор AND

СИНТАКСИС:

Операнд_1 AND Операнд_2

Оператор AND выполняет логическую конъюнкцию.

 

Результатом данной операции является значение True, только когда оба операнда имеют значение True, иначе - False.

Таблица истинности

 

Операнд_1 Операнд_2 Результат
True True True
True False False
False True False
False False False

 

Оператор AND можно использовать для нескольких операндов:

(5<7) AND (4>3) AND (5=6) результатом будет False

 

Независимо от количества операндов результатом логической операции AND будет True только в том случае, когда все операнды выражения будут иметь значение True. В любом другом случае результатом будет False. Обратите внимание, что операнды заключаются в круглые скобки. VBA сначала вычисляет значение каждого операнда внутри скобок, а затем уже все выражение полностью.

Логический оператор OR

СИНТАКСИС:

Операнд_1 OR Операнд_2

Оператор OR выполняет логическую дизъюнкцию.

Результатом данной операции является значение True, если хотя бы один из операндов имеет значение True, иначе - False.

Таблица истинности

 

Операнд_1 Операнд_2 Результат
True True True
True False True
False True True
False False False

 

Оператор OR можно использовать для нескольких операндов:

(5<7) OR (4>3) OR (5=6) результатом будет True

Независимо от количества операндов результатом логической операции OR будет всегда True в том случае, если хотя бы один из операндов выражения будет иметь значение True. Иначе результатом будет False.

Операторы AND и OR можно комбинировать:

((5<7) AND (4>3)) OR (5=6) результатом будет True

Логический оператор NOT

СИНТАКСИС:

NOT Операнд

Оператор NOT выполняет логическое отрицание.

Оператор NOT использует только один операнд.

Таблица истинности

 

Операнд Результат
True False
False True

 

Операторы AND OR NOT можно комбинировать:

((5<7) AND (4>3)) OR NOT (5=6) результатом будет True

Логический оператор XOR

СИНТАКСИС:

Операнд_1 XOR Операнд_2

Оператор XOR выполняет логическое исключение.

Результатом данной операции является значение True, если операнды имеют разные значения, иначе - False.

Таблица истинности

Операнд_1 Операнд_2 Результат
True True False
True False True
False True True
False False False

 

((5<7) AND (4>3)) OR NOT (5=6) XOR (5=5) результатом будет False

Логический оператор EQV

СИНТАКСИС:

Операнд_1 EQV Операнд_2

Оператор EQV - это оператор логической эквивалентности.

Результатом данной операции является значение True, если операнды имеют одинаковые значения, иначе - False.

Таблица истинности

 

Операнд_1 Операнд_2 Результат
True True True
True False False
False True False
False False True

 

((5<7) AND (4>3)) OR NOT (5=6) EQV (5=5) результатом будет True.

 

Операторы сравнения

Оператор Синтаксис Описание
= A = B Равенство: Если А равно В, то - True. Иначе - False
< A < B Меньше: Если А меньше В, то - True. Иначе - False
<= A <= B Меньше или равно: Если А меньше или равно В, то - True. Иначе - False
> A > B Больше: Если А больше В, то - True. Иначе - False
>= A >= B Больше или равно: Если А больше или равно В, то - True. Иначе - False
<> A <> B Не равно: Если А не равно В, то - True. Иначе - False

 

Обычно операции сравнения используются в операторах организации циклов для принятия какого-либо решения о дальнейшем ходе выполнения операций.

Результатом любой операции сравнения является значение типа Boolean: True, False.

Если оба операнда в выражении сравнения имеют один и тот же тип данных, VBA выполняет простое сравнение для этого типа.

Если оба операнда в выражении сравнения имеют определенные типы и эти типы не являются совместимыми, VBA выдает сообщение об ошибке несовпадения типов.

Если один или оба операнда в выражении сравнения являются переменными типа Variant, VBA пытается преобразовать тип Variant в какой-либо совместимый тип.