Вопрос № 13.Арифметичесике и логические выражения и операции над ними 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 = 4
24 Mod 5 = 8
25 Mod 5 = 0
Остальные свойства деления по модулю идентичны целочисленному делению.
Возведение в степень (^)
Оператор возведения в степень возводит число в степень.
5 ^ 3 =125
Оба оператора в выражении возведения в степень должны быть численными выражениями или строками, которые VBA может преобразовать в числа.
Операнд слева от оператора возведения в степень может быть отрицательным числом только, если операнд справа является целым.
Результат выражения имеет тип Double.
Если хотя бы один операнд в выражении имеет тип Null, то результат возведения в степень также будет Null.
Операции отношения
A < B                Меньше                   True
A > B                Больше                    False
A <= B             Меньше или равно    True
A >= B             Больше или равно    False
A <> B            Не равно                     True
A = B              Равно                          False