У меня есть вопрос о глобальной области действия и абстрагирован проблема на простой пример:
В книге Excel:
В Лист1 у меня есть две (2) кнопки.
Первый помечен как SetMe и связан с подпрограммой в Лист1 модуль:
Код Sheet1:
Option Explicit
Sub setMe()
Global1 = "Hello"
End Sub
Вторая помечена как ShowMe и связана с подпрограммой в модуле ThisWorkbook:
Код этой книги:
Option Explicit
Public Global1 As String
Debug.Print("Hello")
Sub showMe()
Debug.Print (Global1)
End Sub
Нажав SetMe, вы получите компилятор error: variable not defined
.
Когда я создаю отдельный модуль и перемещаю объявление Global1, все работает.
Итак, мой вопрос:
Все, что я прочитал, гласит, что глобальные переменные, объявленные в верхней части модуля, вне любого кода должны быть видны всем модулям проекта. Ясно, что это не так.
Если мое понимание модуля неверно.
Объекты Sheet1
, Sheet2
, ThisWorkbook
,..., которые поставляются с рабочей книгой: это не модули, способные объявлять переменные в глобальной области?
Или это единственное место, где можно объявить глобальное, в отдельном модуле типа Модули.