В VB6/VBA вы можете объявлять переменные уровня модуля вне определенного метода Sub
или Function
. Я использовал Private
и Public
перед внутренними модулями и понимаю их так:
Public
- видимый для всего кода внутри модуля и всего кода вне модуля, что делает его глобальным.Private
- отображается только внутри кода модуля.Я заметил, что вы можете использовать Dim
и Global
в качестве модификаторов для модульных переменных. Являются ли Dim
и Global
отличными от Private
и Public
, соответственно, при использовании в качестве модификаторов доступа на модульных полях? Если да, то как они отличаются?
Dim
и Private
работают одинаково, хотя общим соглашением является использование Private
на уровне модуля и Dim
на уровне Sub/Function. Public
и Global
почти идентичны по своей функции, однако Global
может использоваться только в стандартных модулях, тогда как Public
может использоваться во всех контекстах (модули, классы, элементы управления, формы и т.д.) Global
происходит из более старых версий VB и, вероятно, поддерживается для обратной совместимости, но полностью заменяется на Public
.