Меню Visual Basic



Область определения и видимость


Область определения определяет доступность переменной, константы, или процедуры для других процедур. Имеется три уровня областей определения: уровень процедуры, личный уровень модуля и общий уровень модуля.

Область определения переменной определяется при описании этой переменной. Рекомендуется явно описывать все переменные для предотвращения ошибок, связанных с конфликтами имен между переменными с различными областями определения.

Область определения уровня процедуры

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

Sub LocalVariable()

Dim strMsg As String

strMsg = "Эта переменная не может использоваться вне этой процедуры."

MsgBox strMsg

End Sub

Sub OutsideScope()

MsgBox strMsg

End Sub

Область определения уровня модуля

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

В следующем примере строковая переменная strMsg доступна для всех процедур, описанных в модуле. При вызове второй процедуры в диалоговом окне выводится значение строковой переменной.

' Add following to Declarations section of module.

Private strMsg sAs String

Sub InitializePrivateVariable()

strMsg = "Эта переменная не может использоваться вне этого модуля."

End Sub

Sub UsePrivateVariable()

MsgBox strMsg

End Sub

Примечание. Общие процедуры в стандартном модуле или модуле класса доступны для любого адресующего проекта. Для ограничения области определения всех процедур в модуле текущего проекта в раздел описаний модуля помещается инструкция Option Private Module. Общие переменные и процедуры остаются доступными для других процедур текущего проекта, но не для адресующего проекта.




Содержание  Назад  Вперед