Лабораторная работа 17.
Переменные, типы данных и константы.

horizontal rule

Задание

horizontal rule

Задание

Описание переменных

Dim имяПеременной [([индексы])] [as Тип]

Необязательные скобки и параметр индексы используют для описания массива (нумерация элементов массива начинается с 0), если в определении переменной отсутствует конструкция as Тип - тогда переменной присваивается тип Variant. Для создания массивов с большой размерностью, в описании необходимо указать требуемое число индексов.

Область определения переменной определяется тем, где и как описать переменную:
- личная переменная описывается с помощью инструкции Dim, размещенной в процедуре;
- переменная уровня модуля описывается с помощью инструкции Dim, размещенной в разделе описаний модуля;
- общая переменная описывается с помощью инструкции Public, а не инструкции Dim, в разделе описаний модуля (Public UserName as String).

 

Типы данных

№ п/п Тип данных Размер Диапазон
1 Byte 1 byte 0 .. 255
2 Boolean 2 bytes True или False
3 Integer 2 bytes -32,768 .. 32,767
4 Long (длинное целое) 4 bytes -2,147,483,648 .. 2,147,483,647
5 Single (число с плав. точкой одинарной точности) 4 bytes -3.402823E38 .. -1.401298E-45 для отрицательных значений;
1.401298E-45 .. 3.402823E38 для положительных значений
6 Double (число с плав. точкой двойной точности) 8 bytes -1.79769313486231E308 ..
-4.94065645841247E-324 для отрицательных значений;
4.94065645841247E-324 .. 1.79769313486232E308 для положительных значений
7 Currency (денежный) 8 bytes -922,337,203,685,477.5808 .. 922,337,203,685,477.5807
8 Decimal (десятичный) 14 bytes +/-79,228,162,514,264,337,593,543,950,335 без дробной части;
+/-7.9228162514264337593543950335 с 28 знаками после запятой;
наименьшее ненулевое число: +/-0.0000000000000000000000000001
9 Date 8 bytes January 1, 100 .. December 31, 9999
10 Object 4 bytes любая ссылка на объект
11 String
(строка переменной длины)
10 bytes + string length 0 .. около 2 биллионов
12 String
(строка фиксированной длины)
Length of string 1 .. около 65,400
13 Variant
(с числами)
16 bytes любое числовое значение из диапазона Double
14 Variant
(с символами)
22 bytes + string length строка переменной длины
15 User-defined
(using Type)
Number required by elements диапазон каждого входящего элемента определяется типом элемента

Если использовать переменную, не описывая ее, то эта переменная по умолчанию получает тип Variant. Кроме того, тип Variant можно задавать явно. Переменные типа Variant содержат данные любого типа, исключая строки фиксированной длины и типы, определяемые пользователем. Во многих случая имеется возможность преобразовать один тип данных в другой и объединить данные различных типов. При использовании типа Variant упрощается обработка чисел.

Пример:
Dim x as Byte
Dim y as Variant
x = 100
y = x
y = y*3

В данном случает переменная y сначала рассматривается как Byte, но когда ее значение становится больше максимально допустимого значения для Byte, она преобразуется в целое число. Если значение переменной превышает максимальную величину типов Double, Currency, Decimal, то возникает ошибка выполнения: Переполнение.

Пример:
Sub LoopTest
Dim Counter as Integer
Counter = 1
While Counter <= 100
    '
некоторые действия
    Counter = Countr + 1
Wend
End Sub

В данном случае цикл становится бесконечным, потому что из-за ошибки программиста значение переменной Countr равно 0 (использование переменной без объявления) и значение Counter равно 1. Для исключения подобной ошибки можно задать в разделе описаний модуля инструкцию Option Explicit, которая определяет явное объявление переменных. Для того, чтобы VBA автоматически добавлял инструкцию Option Explicit в каждый проект необходимо установить флажок Require Variable Declaration (явное описание переменных) во вкладке Editor меню Tools/Options.

В VBA имеется группа функций для определения подтипа переменной типа Variant:

№ п/п Имя функции Описание
1 isNumeric(выражение) Возвращает значение True, если выражение возвращает числовое значение
2 isArray(переменная) Возвращает значение True, если переменная является массивом
3 isDate(выражение) Возвращает значение True, если значение выражения можно преобразовать в значение даты
4 isEmpty(переменная) Возвращает значение True, если переменная была инициализирована
5 isError(выражение) Возвращает значение True, если выражение представляет значение ошибки
6 isNull(выражение) Возвращает значение True, если значение выражения является пустым (Null)
7 isObject(идентификатор) Возвращает значение True, если идентификатор представляет объектную переменную
8 TypeName(имяПеременной) Возвращает значение типа String, представляющее тип переменной
9 VarType(имяПеременной) Возвращает значение типа Integer, указывающее на подтип переменной Variant

Задание собственных типов данных

Инструкция Type позволяет описать собственные типы данных, созданные на основе стандартных.

[Private | Public] Type имяПеременной
     имяЭлемента [([индексы])] as Тип
     [имяЭлемента [([индексы])] as Тип]
     ...
End Type

Константы

[Public | Private] Const имяКонстанты as Тип  = значение

Использование стандартных констант

Значения аргументов функции MsgBox()

№п/п Константа Значение Описание
1 VbOKOnly 0 Отображается только кнопка OK
2 VbOKCancel 1 Отображаются кнопки OK и Отмена (Cancel)
3 VbAbortRetryIgnore 2 Отображаются кнопки Прервать (Abort), Повторить (Retry)  и Пропустить (Ignore)
4 VbYesNoCancel 3 Отображаются кнопки Да (Yes), Нет (No) и Отмена (Cancel)
5 VbYesNo 4 Отображаются кнопки Да и Нет
6 VbRetryCancel 5 Отображаются кнопки Повторить и Отмена
7 VbCritical 16 Используется значок Критическое сообщение
8 VbQuestion 32 Используется значок Предупреждающий запрос
9 VbExclamation 48 Используется значок Предупреждение
10 VbInformation 64 Используется значок Информационное сообщение
11 VbDefaultButton1 0 Основной является первая кнопка
12 VbDefaultButton2 256 Основной является вторая кнопка
13 VbDefaultButton3 512 Основной является третья кнопка
14 VbApplicationModal 0 Модальное окно на уровне приложения
15 VbSystemModal 4096 Модальное окно на уровне системы

 

Значения, возвращаемые функцией MsgBox()

№п/п Константа Значение Нажатая кнопка
1 vbOK 1 ОК
2 vbCancel 2 Отмена
3 vbAbort 3 Прервать
4 vbRetry 4 Повторить
5 vbIgnore 5 Пропустить
6 vbYes 6 Да
7 vbNo 7 Нет