Шаг 50 - Инструкция Public

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

Public [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 тип.

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

Public NumberOfEmployees As Integer

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

Public X As New Worksheet

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

Пример
В данном примере инструкция Public используется на уровне модуля в общем разделе стандартного модуля для явного объявления переменных общими. Общие переменные доступны всем процедурам во всех модулях во всех приложениях (если инструкция Option Private Module отключена).

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

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