Общие сведения об области и видимости
Область действия определяет, может ли переменная, константа или процедура использоваться в другой процедуре. Область действия бывает на трех уровнях: процедуры, модуля Private и модуля Public.
Область действия переменной определяется при ее объявлении. Лучше всего объявить все переменные в явном виде, чтобы избежать возможных конфликтов именования для переменных с разной областью действия.
область на уровне процедуры
Переменная или константа, определенные в процедуре, не видны за ее пределами. С переменной может работать только процедура, которая содержит объявление этой переменной. Далее показан пример, в котором первая процедура отображает окно сообщения, содержащее текст. Во второй процедуре отображается пустое окно сообщения, так как переменная является локальной для первой процедуры.
Sub LocalVariable()
Dim strMsg As String
strMsg = "This variable can't be used outside this procedure."
MsgBox strMsg
End Sub
Sub OutsideScope()
MsgBox strMsg
End Sub
область уровня частного модуля
Переменные и константы на уровне модуля можно определить в разделе Объявления модуля. Переменные уровня модуля могут быть общедоступными или частными. Общедоступные переменные доступны всем процедурам во всех модулях проекта; частные переменные доступны только для процедур в этом модуле. По умолчанию переменные, объявленные с помощью инструкции Dim в разделе Объявления, относятся к области как закрытые. Однако перед переменной с частной ключевое слово область в коде будет очевидно.
В следующем примере строковая переменная strMsg
доступна для всех процедур, определенных в модуле. При вызове второй процедуры в диалоговом окне отображается содержимое строковой переменной strMsg
.
' Add following to Declarations section of module.
Private strMsg As String
Sub InitializePrivateVariable()
strMsg = "This variable can't be used outside this module."
End Sub
Sub UsePrivateVariable()
MsgBox strMsg
End Sub
Примечание.
Процедуры Public в стандартном модуле или модуле класса доступны в любом ссылающемся проекте. Чтобы ограничить область всех процедур в модуле текущим проектом, добавьте оператор Option Private Module в раздел Объявления модуля. Переменные и процедуры, объявленные как Public, будут доступны для использования в других процедурах текущего проекта, но не в ссылающихся проектах.
область уровня общедоступного модуля
Если переменная уровня модуля объявлена как общая (Public), то она доступна для всех процедур в проекте. В следующем примере строковая переменная может использоваться любой процедурой в любом модуле проекта.
' Include in Declarations section of module.
Public strMsg As String
По умолчанию все процедуры являются общими; исключение составляют процедуры событий. Когда Visual Basic создает процедуру события, частнаяключевое слово автоматически вставляется перед объявлением процедуры. Для всех остальных процедур необходимо явно объявить процедуру с помощью частной ключевое слово, если вы не хотите, чтобы она была общедоступной.
Используйте открытые процедуры, переменные и константы, определенные в стандартных модулях или модулях класса из ссылок на проекты. Для этого необходимо сначала задать ссылку на проект, в котором они объявлены.
Открытые процедуры, переменные и константы, определенные не в стандартных модулях или модулях класса, таких как модули форм или модули отчетов, недоступны для ссылок на проекты, так как эти модули являются частными для проекта, в котором они находятся.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.