- •Типы данных vba
- •Переменные vba
- •Имя переменной
- •Создание переменной
- •Типизированные переменные
- •Область действия переменных
- •Константы vba
- •Константы Boolean
- •Именованные константы
- •Задание типа константы
- •Внутренние константы
- •Совместимость типов данных vba
- •Преобразования численных типов
- •Преобразование строк и чисел
- •Преобразования Boolean
- •Преобразование Date
- •Арифметические операторы vba
- •Оператор вычитания (-)
- •Оператор умножения (*)
- •Оператор деления (/)
- •Деление по модулю (Mod)
- •Логические операторы vba
- •Логический оператор and
- •Логический оператор or
- •Логический оператор not
- •Логический оператор xor
- •Логический оператор eqv
- •Операторы сравнения
- •Приоритеты выполнения операций
- •Функции vba. Понятие функции.
- •Игнорирование результата функции
- •Именованные аргументы функции
- •Функция InputBox
- •Функции vba
- •Математические функции
- •Операторы ветвления vba
- •Циклы vba
- •Цикл For..Next
- •Цикл For Each..Next
- •Цикл Do .. While
- •Цикл Do .. Until
- •Цикл Do .. Loop While
- •Цикл Do .. Loop Until
- •Массивы vba
- •Объявление массивов
- •Использование массивов
- •Изменение размерности динамического массива
Преобразования численных типов
VBA преобразует численные типы данных в выражении в тип наибольшей точности, который затем дает результату выражения. Например, операндами выражения являются числа 10 (Integer) и 20.89 (Single) - результат выражения будет иметь тип Single.
Но, если переменной типа Integer попытаться присвоить численное выражение типа Single, то VBA произведет округление до необходимой точности.
Преобразование строк и чисел
При преобразовании числа в строку VBA создает строку, содержащую все цифры этого числа и десятичный знак (если таковой имеется). Например, число 123.849 будет преобразовано в строку "123.849".
Если число очень большое или очень маленькое - VBA создаст строку в экспоненциальном виде. Например: 123000000 преобразуется в "123Е6".
Обратное преобразование возможно, если только строка содержит символьное представление числа в десятичном формате или экспоненциальном, при этом в качестве разделителя дробной части используется точка (но не запятая).
Преобразования Boolean
Когда VBA преобразует значения типа Boolean в числа, значение True преобразуется в 1, а False - в 0.
Когда происходит обратное преобразование, то VBA преобразует 0 в False, а любое другое число - в True.
Если происходит преобразование типа Boolean в строки, то VBA использует строку "True" для логического значения True и строку "False" - для False. Обратного преобразования строки в тип Boolean не предусмотрено.
Преобразование Date
Когда VBA преобразует тип данных Date в число, результатом является численное значение - число типа Double, которое содержит количество дней от 30 декабря 1899 (отрицательное число представляет дату, более раннюю чем 30 декабря 1899). Десятичная часть числа выражает время дня как часть дня; 0 - это полночь, 0.5 - это полдень.
Преобразование численных типов данных в типы Date является просто обратным преобразованию типа Date в число.
Арифметические операторы 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 преобразует типы данных в результате арифметических операций. Это поможет в дальнейшем избежать многих "ненужных" ошибок при написании кода.
