Встроенные типы данных 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 байт на каждый символ строковых зна-




чений

Если такие типы данных, как integer или string не требуют особых комментариев, поскольку они стандартны и просты, то типы данных object и variant следует прокомментировать. Про тип данных object мы отдельно поговорим в разделе 20.5 "Классы и объекты", сейчас же рассмотрим уникальный в своем роде тип Variant.

Тип variant — это универсальный тип данных, позволяющий программисту не думать о том, каким будет тип переменных. С одной стороны, безусловное удобство: не надо думать при объявлении переменной, с другой — это может привести к ошибкам, которые трудно обнаружить. Более того, на обработку переменных данного типа тратится больше времени, да и память расходуется нерационально (особенно, когда речь идет о статических массивах данного типа).

Мы советуем (особенно начинающим программистам) не злоупотреблять данным типом, хотя ряд приемов его использования заметно упрощает программирование. Например, вы хотите, чтобы пользователь программы ввел целое число (после чего программа нарисует круг соответствующего радиуса) и переменную ввода целого типа. Но что, если пользователь введет вместо целого числа вещественное или, вообще, строковое значение? Произойдет ошибка при попытке присвоения переменной значения не того типа.

Вот тут-то и необходим тип Variant. Если переменная для ввода будет объявлена как variant, ничего страшного не случится: введенное значение бу дет благополучно присвоено этой переменной, а вы получите возможность проанализировать введенное значение и попросить пользователя повторить ввод, если введенное им значение не отвечает требуемым условиям. Теперь перейдем к разговору о третьей составляющей нашего определения типа данных, об операциях. Операция — это действие, выполняемое над данными.

[Результат =] операнд! <операция> операнд2

Любая операция имеет результат и несколько операндов (как правило, два). Операнд — это элемент данных, участвующий в операции. Для каждой операции определены типы данных операндов, для которых она имеет смысл и по которым определяется тип результата. Естественен вопрос: по какому именно правилу определяется тип результата, ведь в качестве операндов могут быть операнды разных типов? Для ответа на этот вопрос необходимо ввести определение приведения. Приведение — это (автоматическое) преобразование значения одного типа в эквивалентное значение другого типа. Конечно, не всякое приведение возможно, т. е. не всегда можно сделать именно эквивалентное преобразование. Например, целое число 3 можно преобразовать в вещественное число 3.0 и значение сохранится, но вещественное число 3.1415926 нельзя преобразовать в целое, не потеряв информацию. Таким образом, учитывая приведения типов, можно однозначно определять тип результата операции по следующему правилу: если операция применяется к операндам различных типов, то операнд, у которого порядок типа ниже, преобразуется к типу операнда, у которого порядок выше и значение операции будет иметь, соответственно, тип высшего порядка. Существует четыре вида операций:

  1. Арифметические (+, - ,*, \, /, ^, mod).
  2. Логические (not, and, or, xor, eqv, imp).
  3. Строковые (+,&).
  4. Операции отношения (=, <>, <, >, <=, >=, Is, Like).

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

Переменная — это элемент данных в программе, которому присвоено имя Значение переменной может задаваться и изменяться программой (переменная — не константа), но в соответствии с определенным типом данной переменной, который задается при ее объявлении. При объявлении задается имя (для идентификации переменной в программе), затем объявляется ее тип (для определения возможных значений переменной и способов ее обработки), а также определяется область видимости этой переменной.

Явное объявление простых переменных имеет следующий синтаксис:

{ Dim I Private | Public | Static } имя Переменной [As <типДанных>] [, имяПеременной [As <типДанных>]} ...

Рассмотрим первую часть объявления — объявление области видимости переменной при помощи соответствующих ключевых слов. К сожалению, что такое область видимости переменной и время ее жизни, нельзя объяснить без специальных понятий и определений, которые будут приведены в разделе 20.4 "Структура программы". Поэтому мы не будем подробно останавливаться на этом вопросе, кроме разве мелких замечаний. Более того, данные ключевые слова несут локальную нагрузку на семантику конструкций и их пропуск при описании ни на чем не скажется.

Следующая часть объявления — это имя переменной. Правила составления имен уже достаточно подробно обсуждались в разделе 20.1 "Общие сведения", и мы не будем еще раз останавливаться на этом.

И наконец, последнее, что необходимо сделать при явном объявлении переменной, — указать ее тип, используя ключевое слово Аs, после которого идет ключевое слово, определяющее тип данных, например integer.

Помимо явного способа объявления переменной, существуют и неявные. Во-первых, можно непосредственно в имени переменной указать ее тип, добавив в конец имени специальный символ (например, $ — строка). А во-вторых, можно вообще не использовать операторы объявления, а при необходимости прямо на месте неявно вводить переменную. Например, можно сразу написать оператор d = 5. В данном случае не было предварительного (явного) объявления переменной, но все-таки она будет проинициализиро-вана. Дело в том, что по умолчанию VBA расценивает данную переменную как нестатическую типа variant. Приведем теперь программу объявления переменных.



Содержание раздела