Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Объявление переменной
Объявление обычной или объектной переменной производится с помощью оператора Dim
по следующей схеме:
Dim [WithEvents] <Имя переменной1> [As [New] <Тип>] [, ...,
[WithEvents] <Имя переменнойN> [As [New] <Тип>]]
Пример объявления одной переменной:
Dim s As String
Пример объявления трех переменных:
Dim x As Integer, y As Double, s As String
Объявим две переменные типа Variant
и одну переменную типа Integer
:
Dim n, x As Integer, m As Variant
В этом примере переменные n
и m
будут иметь тип Variant
, а переменная x
— тип Integer
. Обратите еще раз внимание на то, что переменная n
имеет тип Variant
, а не Integer
. Предположение, что указанный тип будет иметь и переменная перед запятой, является очень частой логической ошибкой при которой компилятор не выводит никакого сообщения. Такую ошибку обычно совершают программисты знающие другие языки программирования. Например, в C++ после типа можно перечислить сразу несколько переменных через запятую:
int x, y, z;
Все три переменные в C++ будут иметь тип int
(целое число). Если в VBA написать:
Dim x, y, z As Integer
то только переменная z
будет иметь тип Integer
. Чтобы все переменные имели тип Integer
нужно указать тип данных после каждой переменной:
Dim x As Integer, y As Integer, z As Integer
Необязательное ключевое слово New
может использоваться при объявлении объектной переменной. В этом случае экземпляр класса создается неявным образом при первом обращении к объекту, поэтому сохранять ссылку с помощью оператора Set
не нужно.
Необязательное ключевое слово WithEvents
обозначает, что объектная переменная используется при отклике на события. Пример использования ключевого слова WithEvents
мы рассмотрим при изучении обработки пользовательских событий в разд. 10.9.
Если переменная не объявлена в программе с помощью оператора Dim
или при объявлении тип не указан явно, то переменная по умолчанию будет иметь тип Variant
. Это поведение можно изменить с помощью следующих операторов:
DefBool <Диапазон1>[, ..., <ДиапазонN>] ' Тип Boolean
DefByte <Диапазон1>[, ..., <ДиапазонN>] ' Тип Byte
DefInt <Диапазон1>[, ..., <ДиапазонN>] ' Тип Integer
DefLng <Диапазон1>[, ..., <ДиапазонN>] ' Тип Long
DefSng <Диапазон1>[, ..., <ДиапазонN>] ' Тип Single
DefDbl <Диапазон1>[, ..., <ДиапазонN>] ' Тип Double
DefCur <Диапазон1>[, ..., <ДиапазонN>] ' Тип Currency
DefDate <Диапазон1>[, ..., <ДиапазонN>] ' Тип Date
DefStr <Диапазон1>[, ..., <ДиапазонN>] ' Тип String
DefObj <Диапазон1>[, ..., <ДиапазонN>] ' Тип Object
DefVar <Диапазон1>[, ..., <ДиапазонN>] ' Тип Variant
Все эти операторы должны быть расположены в самом начале модуля.
Параметр <Диапазон>
задает начальную букву в имени переменной или диапазон букв (например, X-Z
). Все необъявленные переменные, начинающиеся с этих букв, по умолчанию будут иметь указанный тип данных, а не тип Variant
. Укажем, что переменные, начинающиеся с буквы I
, должны иметь тип Integer
:
DefInt I
Теперь зададим для переменных, имена которых начинаются с букв A
, X
, Y
и Z
, тип Double
:
DefDbl A, X-Z
При указании диапазона A-Z
устанавливается тип для переменных, имена которых начинаются не только с букв от A
до Z
, но и для имен, начинающихся с букв национальных алфавитов, например, с русских букв.
Существует еще один способ указать тип данных. Для этого после имени переменной задаются следующие специальные символы:
%
— типInteger
;&
— типLong
;!
— типSingle
;#
— типDouble
;@
— типCurrency
;$
— типString
.
Пример указания типа Integer
для переменной x
:
x% = 10
С одной стороны хорошо, что переменной можно пользоваться вообще без объявления, но это может стать причиной множества ошибок. Например, при наборе имени переменной программист по ошибке ввел неправильную букву. В результате будет создана новая переменная и никакого сообщения об ошибке программист не увидит, а вот результат выполнения программы станет некорректным. Чтобы избежать головной боли следует обязательно объявлять переменные явным образом. Контроль за соблюдением этого правила можно возложить на компилятор, добавив в начале модуля следующую инструкцию:
Option Explicit
При наличии инструкции компилятор производит проверку объявления всех переменных. Если переменная не была объявлена явным образом, то компилятор выведет сообщение об ошибке и выполнение программы будет остановлено.
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов