Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vopros_57_Osnovy_programmirovania_yazykom_VBAHa....doc
Скачиваний:
2
Добавлен:
25.04.2019
Размер:
136.19 Кб
Скачать

Вопрос 57

Основы программирования языком VBA

Характеристика проекта VBA

Понятия объекта и объектной модели

Свойства и методы объектов, синтаксис языка, типы данных

Синтаксис и данные языка vba.

Синтаксис – это совокупность правил, которые определяют порядок использования и организацию элементов языка.

Типы данных - это определённые виды данных, которые VBA сохраняет и может манипулировать.

Типы данных

Описание и диапазон значений

Byte

Сохранение положительных чисел от 0 до 255

Boolean

Сохранение логических значений: True, False

Currency

Сохранение чисел для точных вычислений в диапазоне

от -922337203685477,5808 до 922337203685477,5807

Date

Сохранение даты и времени.

Даты от 1.01.100 до 31.12.9999

Время от 00:00:00 до 23:59:59

Double

Сохранение чисел двойной точности

от -1,79769313486232*10308 до -4,94065645841247*10-324 от 4,94065645841247*10-324 до 1,79769313486232*10308

Integer

Сохранение целых чисел от -32768 до 32767

Long

Сохранение целых чисел от -2147483648 до 2147483647

Single

Сохранение чисел одинарной точности

от -3,402823*1038 до -1,401298*10-45

от 1,401298*10-45 до 3,402823*1038

String

Сохранение текста длинной до 2 млрд. символов

Variant

Сохранение любого типу данных

10.2.2. Операторы языка VBA.

Оператор - это символ, или выражение, дает указание программе выполнить определенное действие над конкретными данными. VBA содержит несколько категорий операторов: оператор присваивания; числовые и текстовые операторы; логические операторы; операторы сравнения.

Оператор присвоения. Символ равно (=) в VBA является оператором присваивания и используется для присвоения значения переменной. Правила записи оператора присваивания следующие: слева от оператора присваивания должна стоять переменная, которой передается значение, справа от оператора присваивания должно стоять выражение.

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

1. Let varname = expression;

2. varname = expression;

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

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

Первый вариант операции присвоения использовался в ранних языках программирования Basic. Второй вариант используется в современной версии 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 = 4; 24 Mod 5 = 8; 25 Mod 5 = 0.

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

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

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

5 ^ 3 = 125.

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

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

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

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

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

Арифметические операторы VBA

Оператор

Синтаксис

Описание

+

A + B

Сложение: складывает А и В.

-

A - B

Вычитание: вычитает из А В.

*

A * B

Умножение: перемножает А на В.

/

A / B

Деление: делит А на В.

\

A \ B

Целочисленное деление: делит А на В, отбрасывая дробную часть. Результат - целое число.

Mod

A Mod B

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

^

A ^ B

Возведение в степень: возводит А в степень В.

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

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

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

Синтаксис:

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

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

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

Таблица истинности оператора AND

Операнд_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.

Таблица истинности оператора OR

Операнд_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 использует только один операнд.

Таблица истинности логического оператора 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.

Таблица истинности логического оператора XOR

Операнд_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