Шаг 46 - Инструкция Private

Применяется на уровне модуля для описания личных переменных и выделения памяти.

Private [WithEvents] имяПеременной[([индексы])] [As [New] тип] [,[WithEvents] имяПеременной[([индексы])] [As [New] тип]] . . .

Параметры
WithEvents
Необязательный. Ключевое слово, указывающее, что имяПеременной является объектной переменной, которая используется при отклике на события, генерируемые объектом ActiveX. Применяется только в модулях класса. Пользователь имеет возможность описать с помощью ключевого слова WithEvents произвольное количество отдельных переменных, однако при этом не допускается создание массивов. Не допускается также использование ключевого слова New с ключевым словом WithEvents.
имяПеременной
Обязательный. Имя переменной, удовлетворяющее стандартным правилам именования переменных.
индексы
Необязательный. Размерности переменной массива; допускается описание до 60 размерностей. Аргумент индексы использует следующий синтаксис:

[нижний To] верхний [,[нижний To] верхний] . . .
Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией Option Base. Если отсутствует инструкция Option Base, нижняя граница массива равняется нулю.
New
Необязательный. Ключевое слово, включающее возможность неявного создания объекта. Если указано ключевого слова New при описании объектной переменной, новый экземпляр объекта создается при первой ссылке на объект, поэтому нет необходимости присваивать ссылку на объект с помощью инструкции Set. Ключевое слово New нельзя использовать для описания переменных любых внутренних типов данных, для описания экземпляров зависимых объектов, а также вместе с ключевым словом WithEvents.
тип
Необязательный. Тип данных переменной; поддерживаются типы Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal(в настоящее время не поддерживается), Date, String (для строк переменной длины), String * длина (для строк фиксированной длины), Object, Variant, определяемый пользователем тип или объектный тип. Для каждой описываемой переменной следует использовать отдельное предложение As тип.

Замечания
Переменные типа Private доступны только в модуле, в котором они описаны.
Инструкция Private используется для описания типа данных переменной. Например, следующая инструкция описывает переменную типа Integer:

Private NumberOfEmployees As Integer

Инструкция Private применяется также для описания объектного типа переменной. Ниже описывается переменная для нового экземпляра листа электронной таблицы.

Private X As New Worksheet

Если ключевое слово New не используется при описании объектной переменной, то перед использованием объекта необходимо присвоить имеющийся объект с помощью инструкции Set переменной, ссылающейся на этот объект. До присвоения объекта описанная объектная переменная имеет специальное значение Nothing, которое указывает, что переменная не содержит ссылку на какой-либо определенный экземпляр объекта.
Если для переменной не задан тип данных или тип объекта, и в модуле отсутствует инструкция DefТип, переменная по умолчанию получает тип Variant.
Допускается также использование инструкции Private с пустыми скобками для описания динамического массива. После описания динамического массива пользуйтесь в процедуре инструкцией ReDim для определения числа размерностей и элементов этого массива. При попытке переопределить размерность для переменной массива, размеры которого были явным образом заданы в инструкции Private, Public, или Dim, возникает ошибка.
При инициализации переменных числовая переменная получает значение 0, строка переменной длины получает значение пустой строки (""), а строка фиксированной длины заполняется нулями. Переменные типа Variant получают значение Empty. Каждый элемент переменной определяемого пользователем типа получает значение как самостоятельная переменная.
При использовании инструкции Private в процедуре она обычно помещается в начало процедуры.

Пример
В данном примере инструкция Private используется на уровне модуля для объявления переменных личными. Личные переменные доступны только модулю, в котором они объявлены.

Private Number As Integer			' Личная переменная типа Integer.
Private NameArray(1 To 5) As String		' Личная переменная-массив.
					' Несколько объявлений (Variant, Variant и Integer), все личные.
Private MyVar, YourVar, ThisVar As Integer

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.