Типы данных языка Visual Basic. Переменные и константы

 

Переменные и константы служат для хранения в программе определенных числовых или текстовых значений. Переменная – это величина, значение которой может изменяться в программе. Соответственно, константа – это величина, значение которой в программе изменяться не будет (константы можно изменять только редактированием исходного кода VBA).

Каждая переменная в программе имеет не только название (имя), но и тип. Тип переменной – это параметр, который определяет диапазон хранимого в ячейки памяти значения (чисел или символов), методы его обработки и объем выделяемой памяти. В приведенной ниже таблице представлены печень основных типов переменных, объем выделяемой памяти на одну переменную и диапазон хранимых значений (как задать в программе нужный тип переменной будет рассмотрено в следующем разделе)

 

Таблица 2. Типы данных VBA

 

Название типа переменной Символ суффикса в имени переменной Размер в байтах переменной Описание и диапазон изменения значений переменной данного типа (минимальное и максимальное значения)
Integer % Используется для хранения целого числа в диапазоне от –32768 до +32767
Long & Используется для хранения целого числа от –2147483648 до 2147483647
Byte   Используется для хранения целого положительного числа в от 0 до 255

 

Продолжение табл. 2

 

Boolean   Используется для хранения логических значений (переменная имеет только два возможных значения – True (Истина) или False (Ложь)
Single ! Используется для хранения дробного числа (8 десятичных знаков после запятой). Отрицательные числа: от –3.402823Е38 до –1.401298Е45 Положительные числа: от 1.401298Е-45до3.402823Е38
Double # Используется для хранения дробных чисел с повышенной точностью (16 десятичных знаков после запятой) Отрицательные числа: от –179.769313486232D+308 до –4. 94065645841247D–324. Положительные числа: от 4.94065645841247D–324 до 1.797693 13486232D+308
String (переменной длины) $ 10 байт + длина строки Используется для хранения текстовой переменной. Может содержать от 0 символов до приблизительно 2 миллиардов символов
String (фиксированной длины)   Длина строки (1 байт на символ) Используется для хранения текстовой переменной. Может содержать от одного до приблизительно 600 тыс. символов
Variant   16 байт + 1 байт/символ Тип Variant может хранить значения любого другого типа данных. Диапазон для данных типа Variant зависит от фактически сохраняемых данных. Этот тип данных является типом данных По умолчанию (если в программе отсутствует указание типа какой-либо переменной, то VBA приписывает ей тип Variant и выделяет 16 байт)

 

Окончание табл. 2

 

Date   Используется для хранения информации о дате и времени. Диапазон дат может быть от 1 января 100 года до 31 декабря 9999 года Диапазон времени от 00:00:00 до 23:59:59

При выборе имени переменной в VBA необходимо соблюдать следующие обычные в программировании правила:

– имя переменной должно начинаться с буквы алфавита (допускается только латиница);

– после первой буквы имени переменной может стоять любая комбинация цифр, букв или символов подчеркивания, или нижнее тире (_);

– имена переменных не должны содержать пробелы, знаки препинания или любые другие специальные символы, например, символы математических операций (=, +, –, / ) и т.п.;

– имена переменных могут быть любой длины , но не должны превышать 255 символов;

– имя переменной не должно дублировать определенные ключевые слова языка VBA;

– имя переменной должно быть уникальным в рамках его области действия, то есть в пределах процедуры или модуля, в котором данная переменная объявляется.

Имена переменных не «чувствительны» к регистру символов, то есть написание имени переменной прописными (заглавными) или строчными (маленькими) буквами не имеет значения. Например, имена FirstMyVar и firstmyvar представляют для VBA одно и то же имя. При выборе имен переменных надо делать их по возможности более информативными (например, имя AllSum для переменной, хранящий некоторую сумму данных, будет более информативным, чем простой символ S).

Имена могут иметь не только переменные, но и константы (именованные константы). Использование именованных констант повышает читабельность процедур. Например, процедура, выполняющая геометрические вычисления, легче читается и более понятна, если использовать именованную константу Pi вместо константы, записанной непосредственно в числовой форме – 3,14.

Переменная типа String имеет некоторые особенности. П умолчанию переменные данного типа принимаются средой VBA строками переменной длины. Строковые переменные переменной длины изменяют длину в зависимости от конкретной длины строки, сохраняемой в данной переменной. Иногда может понадобиться использовать строку фиксированной длины (строки фиксированной длины всегда имеют одну и ту же длину, указываемую при объявлении переменной). Это может быть полезно в случае, если необходимо обеспечить, чтобы текст, сохраняемый в строковой переменной, всегда содержал одно и то же число символов.

 

Задание типа данных переменной

 

Хотя объявлять тип переменным не обязательно ( VBA автоматически присваивает им тип Variant), объявление типа переменных имеет несколько преимуществ:

– объявленные переменные ускоряют выполнение кода программ (при необъявленной переменной среда VBA тратит некоторое время на анализ переменной, которой по умолчанию присвоен тип Variant,чтобы определить ее конкретный тип);

– объявленные переменные повышают эффективность кода. Переменные типа Variant могут занимать гораздо больше памяти, чем переменные определенных типов. Объявленная переменная занимает только тот размер памяти, который необходим для хранения данных этого определенного типа, поэтому это может значительно сократить объем памяти, требуемый для программы в целом;

– программный код с переменными объявленного типа легче читать и понимать.

Объявить тип переменной можно явно и неявно.

Для явного объявления переменной и ее типа используется оператор Dim, который в общем случае имеет следующий формат записи:

 

Dim name_l As type_l, name_2 As type_2, ...

 

Примеры правильного синтаксиса для объявлений типа переменных:

 

Dim a, b, sum, z12 As Integer

Dim DataPlata As Date

Dim Message1 As String

Dim Counter2 As Integer

Dim Profit As Single, Message As String

 

При неявном объявлении тип переменной задается добавлением суффикса символа определения типа в конец имени переменной (см. табл. 2), например:

 

MyVar% = 25 это соответствует типу Integer

CelsiusTemp! = 15,35 это соответствует типу Single

Title$ = "Excel" это соответствует типу String

 

Хотя неявное объявление переменных может показаться более удобным, с ним связаны некоторые проблемы. Когда переменные объявляются неявно, существует риск нечаянно создать новую переменную, когда на самом деле, необходимо использовать уже существующую переменную, или использовать существующую переменную, когда надо создать новую. Обе эти ситуации приводят к ошибкам в коде, которые очень трудно потом отслеживать. Чтобы заранее не допустить проблем, связанных с непроизвольным неявным объявлением переменных, VBA предоставляют команду Option Explicit. При использовании команды Option Explicit VBA требует обязательного объявления всех переменных перед их использованием.

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