Вот альтернативный метод проверки, включен ли VBA, без необходимости скрывать / показывать листы.Проблема со скрытием / отображением листов заключается в том, что лист можно сохранить в состоянии «включено», закрыть без сохранения, а затем снова открыть и не отображать предупреждение.
Создайте в модуле следующую функцию (не макрокоманду или таблицу):
Public Function MacrosEnabled()
MacrosEnabled = True
End Function
Теперь в любой ячейке вы хотите отобразить уведомление о том, включены макросы или нет,введите следующее уравнение:
=IF(ISERROR(MacrosEnabled()&NOW()),"Macros are disabled","Macros are enabled")
Если вы просто используете ISERROR(MacrosEnabled())
, то значение не пересчитывается при каждом открытии электронной таблицы.Путем объединения NOW()
текущее время считывается каждый раз, когда открывается электронная таблица, и поэтому значение ячейки пересчитывается.Я тщательно протестировал этот метод, и он, похоже, очень надежно указывает, включены макросы или нет.
Затем вы можете применить условное форматирование, чтобы сделать несколько вещей, если макросы отключены:
Выделите чек-ячейку ярким цветом и, возможно, измените "«Макросы отключены» - текст, содержащий инструкции по включению макросов.
«Скрыть» ячейки, значения которых зависят от того, включены ли макросы, путем установки одинакового цвета текста и фона.
Вот таблица, демонстрирующая этот метод .