Переменные уровня модуля объявляются в самом начале модуля, перед всеми подпрограммами и функциями. Они имеют область видимости, охватывающую все блоки кода внутри модуля, и могут использоваться в любой части кода в этом модуле.
Для объявления переменной уровня модуля вы используете ключевое слово "Dim" и указываете ее имя. Например, вот как объявить переменную уровня модуля с именем "моёЗначение":
В этом примере мы объявляем переменную уровня модуля "моёЗначение" типа "Integer". Теперь мы можем использовать эту переменную в любом месте внутри модуля, включая подпрограмму "тест".
Переменные уровня модуля особенно полезны, когда вам нужно передавать данные между разными подпрограммами или функциями в рамках одного модуля. Вы можете изменять значение переменной уровня модуля в одной подпрограмме и затем использовать это значение в другой подпрограмме.
Вот ещё пример использования переменной уровня модуля для передачи данных:
В этом примере мы объявляем переменную уровня модуля "счетчик" типа "Integer". Затем у нас есть две подпрограммы: "СчетчикВозрастания" и "ОтображениеСчетчика". Первая подпрограмма увеличивает значение счетчика на 1, а вторая подпрограмма отображает значение счетчика в сообщении.
Теперь, если вызвать подпрограмму "СчетчикВозрастания" несколько раз, а затем вызвать подпрограмму "ОтображениеСчетчика", мы увидим актуальное значение счетчика.
Хотя можно оператором "Call" вызвать процедуру "ОтображениеСчетчика" и тогда мы будем видеть актуальное значение счетчика каждый раз, когда запускаем процедуру "СчетчикВозрастания":
Call ОтображениеСчетчика
Нужно помнить, что переменные уровня модуля видны только внутри этого модуля. Они не будут видны в других модулях или формах вашего проекта VBA.
Использование переменных уровня модуля может помочь вам передавать данные между различными частями кода внутри одного модуля. Они обеспечивают способ сохранения и обмена информацией, которая не ограничивается одной подпрограммой или функцией.
Рассмотрим еще один пример использования переменных уровня модуля:
Username (имя пользователя)
При вызове процедуры "УстановитьИмяПользователя" выводится диалоговое окно (Inputbox), которое ждет, пока пользователь введет текст или нажмет кнопку, и возвращает строку с содержимым текстового поля:
В этом примере мы объявляем переменную уровня модуля "username" типа "String". Подпрограмма "УстановитьИмяПользователя" запрашивает у пользователя его имя и сохраняет его в переменной "username".
Затем Вы запускаете подпрограмму "ПриветствиеПользователя", которое выводит приветствие с использованием значения переменной "username".
Обратите внимание, что переменная "username" доступна и используется в обеих подпрограммах, потому что она объявлена на уровне модуля.
Здесь есть нюанс - необходимо быть осторожным при использовании переменных уровня модуля. Их глобальная видимость может привести к конфликтам и путанице, особенно если у вас есть множество переменных с одинаковыми именами в разных частях кода.
Важно хорошо документировать имена и назначения переменных уровня модуля, чтобы облегчить понимание кода другим разработчикам и себе в будущем.
В следующей статье рассмотрим статические переменные.