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

       

Простые типы данных.


Как и всякий порядочный язык, VBA содержит все привычные встроенные простые типы данных: логические, арифметические и строковые:

Таблица 3.1. Система простых типов языка VBA

Имя типаВозможные значенияТребуемая память
BooleanTrue, False2 байта
Byte0…2551 байт
Integer-32768 …+327672 байта
LongПримерно: -2000 000 000…+2000 000 0004 байта
DecimalПримерно 30 десятичных цифр. Можно указать число цифр после десятичной точки.12 байтов
Single- 3,4E38 …-1,4 E-45 для отрицательных значений 1,4E-45 … 3,4E38 для положительных значений4 байта
Double-1,7E308 … -4,9E-324 для отрицательных значений4,9E-324 … 1,7E308 для положительных значений8 байтов
CurrencyДесятичные числа с фиксированной позицией запятой. Возможны 15 цифр до запятой и 4 после.8 байтов
StringЕсть два вида строк: Строки фиксированной длины имеют до 216 символов. Строки переменной длины имеют до 231 символов.10 байтов +1 байт на символ в обычной кодировке и 2 байта в кодировке Unicode
DateДаты изменяются в диапазоне от 1 января 100 г. до 31 декабря 9999 г.8 байтов
ObjectСсылка на объект (указатель)4 байта
VariantУниверсальный тип, значением которого могут быть данные любого из перечисленных выше типов, объекты, значения NULL и значения ошибок ERRORЗависит от контекста, но не менее 16 байтов

Как видите, в VBA имеется не меньше простых типов, чем в других известных языках программирования. Сделаем несколько замечаний. Переменные типа Decimal нельзя объявлять так, как переменные других типов, - например, оператором Dim. Этот тип является одним из вариантов типа Variant и для его задания используется функция CDec. Тип Currency используется при денежных расчетах.

Замечание:

Иногда, тип Currency используют вместо вещественного типа Single для ускорения расчетов. Вычисления над данными этого типа идут быстрее, чем в случае, когда для проведения вычислений приходится привлекать сопроцессор.

Особо стоит сказать о типе Variant. Такой универсальный тип позволяет превратить язык в бестиповый,- все данные могут иметь один тип (Variant).
Конечно, это удобно (думать не надо!), а иногда и полезно, но чревато неприятными ошибками, да и память расходуется не эффективно. VBA провоцирует чрезмерное использование этого типа, так как позволяет, объявляя переменную, не указывать ее тип, и тогда по умолчанию он устанавливается как Variant. Правильно всегда объявлять тип переменной, например, пишите Byte, если Вы знаете, что возможные значения не выходят из этого диапазона. Контроль типов поможет избежать ошибок при выходе значения за возможные пределы. Особого внимания требует работа с массивами, - плата за неэффективное использование памяти здесь может быть чрезмерно высока.

Переменные типа Variant могут получать значения любого типа в зависимости от контекста. Кроме того, они могут принимать и некоторые специальные значения:

  • Empty - переменная не была инициализирована;
  • NULL - данные ошибочны;
  • ERROR - значение содержит код ошибки, который может быть использован для ее обработки в программе;
  • Nothing - переменная типа Object ни на что не ссылается: связь между ней и конкретным объектом прервана или не установлена.



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