Excel VBA Макросы: Значения ячеек из скрытого листа как глобальные константы или переменные.

Автор Master_Sergius, 19 февраля 2020, 18:51

Master_Sergius

Хочу в модуль "Constants" засунуть несколько глобальных констант или переменных (возможно, из ячеек нельзя сделать константы), значения для которых находятся в одном скрытом листе, назовем его "Hidden_Hack_Vars", чтобы оно выглядело как-то так:

Public Const hiddenSheetName = "Hidden_Hack_Vars"
Public Const DepartmentName = ThisWorkbook.Worksheets(hiddenSheetName).range("A1").Value

Но происходит ошибка: Compile Error.

Как это сделать правильно?

Администратор

В константу можно записать только непосредственно данные: из ячейки или из чего-то другого нельзя записать.
Значит вам надо отказаться от констант.

Администратор

Глобальные переменные можно заполнить с помощью процедуры при открытии эксель-файла с помощью события "Workbook_Open".

Приложил файл-пример. После открытия файла-примера, включите макросы в файле. Запустится событие "Workbook_Open", которое заполнит глобальные переменные. После этого, запустите прямо из VBA макрос Module1.Main. В области View - Immediate Window вы увидите содержимое глобальных переменных.
Событие "Workbook_Open" находится в модуле "ЭтаКнига".

Но если данные на листе изменятся, то в глобальных переменных данные останутся прежние. Т.е. связь между глобальной переменной и ячейкой не устанавливается. Т.е. данные в глобальные переменные запишутся только один раз после открытия файла.

Значения в глобальных переменных сохраняются до закрытия файла, в котором они находятся.
Глобальные переменные очистятся в этих случаях:
1) если произойдёт run-ошибка,
2) если используется в каком-либо макросе команда "End",
3) если программист щёлкнет в VBA синий квадратик "Reset".

[вложение удалено администратором]