Я знаю, что это старый пост, но он может быть полезен для новых читателей. Простой способ обойти проблему передачи переменных между модулями и формами - использовать область реестра VBA. Это очень простая и простая в использовании техника, которая делает проекты красивыми и чистыми.
Чтобы сохранить значение:
SaveSetting AppName, Section, Key, Setting
Чтобы получить значение:
GetSetting AppName, Section, Key, [Default]
Это позволяет избежать потери переменных и создания скрытых элементов управления в формах. Он также работает без изменений на ПК и Mac.
Затем я обычно устанавливаю загрузку констант в своих проектах, чтобы определить первые три параметра:
Public Const REG_PROD = "My product name"
Public Const REG_CONFIG = "Configuration"
Public Const REG_SETTING1 = "My Setting 1"
Таким образом, вышеупомянутые вызовы станут:
Чтобы сохранить значение:
SaveSetting REG_PROD, REG_CONFIG, REG_SETTING1, "My Value"
Чтобы получить значение:
GetSetting REG_PROD, REG_CONFIG, REG_SETTING1, "Value not set"
Раньше я использовал скрытый метод управления, но он добавляет много управления, и вы не всегда можете иметь значения переменных, тогда как вы можете оставить экземпляр RegEdit открытым для целей отладки.