Встроенные типы данных VBA
Таблица 20.2. Встроенные типы данных VBA
Тип данных |
Описание |
Область значений |
Требуемая память |
||
Boolean |
Логическое значение |
True (Истина) и |
2 байта |
||
|
|
False (Ложь) |
|
||
Byte |
Число без знака |
0-255 |
1 байт |
||
Currency |
Десятичные числа с фиксированным количеством знаков после запятой |
-922 337 203 685 477,5808 - 922 337 203 685 477,5807 |
8 байтов |
||
Date |
Используется для хранения дат |
1.01.0100г.-31.12.9999г. |
8 байтов |
||
Decimal |
Любое число |
28 знаков |
12 байт |
||
Double |
Числовые значения с пла- |
-1.7Е308--4.9Е324 |
8 байтов |
||
|
вающей точкой двойной точности |
для отрицательных чисел и 4.9Е324 — |
|
||
|
|
1 ,7Е308 для положи- |
|
||
|
|
тельных чисел |
|
||
Тип данных |
Описание |
Область значений |
Требуемая память |
||
Integer |
Короткие целые числовые |
-32 768 - 32 767 |
2 байта |
||
|
значения |
|
|
||
Long |
Длинные целые числовые |
-2 147483648- |
4 байта |
||
|
значения |
2147483647 |
|
||
Object |
Ссылка на объект |
|
4 байта |
||
Single |
Числовые значения |
-3.4Е38--1.4Е45 |
4 байта |
||
|
с плавающей точкой обыч- |
для отрицательных |
|
||
|
ной точности |
чисел |
|
||
|
|
и 1.4Е-45-3.4Е-45 |
|
||
String |
Используется для хранения строковых значений |
для положительных Длина строки от 0 до 64 Кбайт |
1 байт на символ |
||
Variant |
Может использоваться |
Значения любого |
16 байт плюс |
||
|
для хранения всех вышеперечисленных типов |
из вышеперечисленных типов плюс Null, Error, Empty, Nothing. |
1 байт на каждый символ строковых зна- |
||
|
|
|
чений |
||
Тип variant — это универсальный тип данных, позволяющий программисту не думать о том, каким будет тип переменных. С одной стороны, безусловное удобство: не надо думать при объявлении переменной, с другой — это может привести к ошибкам, которые трудно обнаружить. Более того, на обработку переменных данного типа тратится больше времени, да и память расходуется нерационально (особенно, когда речь идет о статических массивах данного типа).
Мы советуем (особенно начинающим программистам) не злоупотреблять данным типом, хотя ряд приемов его использования заметно упрощает программирование. Например, вы хотите, чтобы пользователь программы ввел целое число (после чего программа нарисует круг соответствующего радиуса) и переменную ввода целого типа. Но что, если пользователь введет вместо целого числа вещественное или, вообще, строковое значение? Произойдет ошибка при попытке присвоения переменной значения не того типа.
Вот тут-то и необходим тип Variant. Если переменная для ввода будет объявлена как variant, ничего страшного не случится: введенное значение бу дет благополучно присвоено этой переменной, а вы получите возможность проанализировать введенное значение и попросить пользователя повторить ввод, если введенное им значение не отвечает требуемым условиям. Теперь перейдем к разговору о третьей составляющей нашего определения типа данных, об операциях. Операция — это действие, выполняемое над данными.
[Результат =] операнд! <операция> операнд2
Любая операция имеет результат и несколько операндов (как правило, два). Операнд — это элемент данных, участвующий в операции. Для каждой операции определены типы данных операндов, для которых она имеет смысл и по которым определяется тип результата. Естественен вопрос: по какому именно правилу определяется тип результата, ведь в качестве операндов могут быть операнды разных типов? Для ответа на этот вопрос необходимо ввести определение приведения. Приведение — это (автоматическое) преобразование значения одного типа в эквивалентное значение другого типа. Конечно, не всякое приведение возможно, т. е. не всегда можно сделать именно эквивалентное преобразование. Например, целое число 3 можно преобразовать в вещественное число 3.0 и значение сохранится, но вещественное число 3.1415926 нельзя преобразовать в целое, не потеряв информацию. Таким образом, учитывая приведения типов, можно однозначно определять тип результата операции по следующему правилу: если операция применяется к операндам различных типов, то операнд, у которого порядок типа ниже, преобразуется к типу операнда, у которого порядок выше и значение операции будет иметь, соответственно, тип высшего порядка. Существует четыре вида операций:
- Арифметические (+, - ,*, \, /, ^, mod).
- Логические (not, and, or, xor, eqv, imp).
- Строковые (+,&).
- Операции отношения (=, <>, <, >, <=, >=, Is, Like).
Переменная — это элемент данных в программе, которому присвоено имя Значение переменной может задаваться и изменяться программой (переменная — не константа), но в соответствии с определенным типом данной переменной, который задается при ее объявлении. При объявлении задается имя (для идентификации переменной в программе), затем объявляется ее тип (для определения возможных значений переменной и способов ее обработки), а также определяется область видимости этой переменной.
Явное объявление простых переменных имеет следующий синтаксис:
{ Dim I Private | Public | Static } имя Переменной [As <типДанных>] [, имяПеременной [As <типДанных>]} ...
Рассмотрим первую часть объявления — объявление области видимости переменной при помощи соответствующих ключевых слов. К сожалению, что такое область видимости переменной и время ее жизни, нельзя объяснить без специальных понятий и определений, которые будут приведены в разделе 20.4 "Структура программы". Поэтому мы не будем подробно останавливаться на этом вопросе, кроме разве мелких замечаний. Более того, данные ключевые слова несут локальную нагрузку на семантику конструкций и их пропуск при описании ни на чем не скажется.
Следующая часть объявления — это имя переменной. Правила составления имен уже достаточно подробно обсуждались в разделе 20.1 "Общие сведения", и мы не будем еще раз останавливаться на этом.
И наконец, последнее, что необходимо сделать при явном объявлении переменной, — указать ее тип, используя ключевое слово Аs, после которого идет ключевое слово, определяющее тип данных, например integer.
Помимо явного способа объявления переменной, существуют и неявные. Во-первых, можно непосредственно в имени переменной указать ее тип, добавив в конец имени специальный символ (например, $ — строка). А во-вторых, можно вообще не использовать операторы объявления, а при необходимости прямо на месте неявно вводить переменную. Например, можно сразу написать оператор d = 5. В данном случае не было предварительного (явного) объявления переменной, но все-таки она будет проинициализиро-вана. Дело в том, что по умолчанию VBA расценивает данную переменную как нестатическую типа variant. Приведем теперь программу объявления переменных.
Содержание раздела