Мне нужно временно сохранить настройки моего макроса для каждого листа.Я думал о расширении свойств активного листа для хранения настроек там.Целью было бы прочитать свойство, например ActiveSheet.Setting1.Я пытался обернуть объект ActiveSheet в класс:
модуль класса "cCustomSheet":
Public WithEvents WS As Worksheet
Public Setting1 As String
модуль "Module1":
Dim ActiveWS As cCustomSheet
Sub test1()
Set ActiveWS = New cCustomSheet
Set ActiveWS.WS = ActiveSheet
End Sub
Sub test2()
MsgBox ActiveWS.WS.Name
End Sub
Этот код работаетбез ошибок, но ActiveWS
следует обновить до нового активного листа, если пользователь активирует другой лист, а это не так.Если я удаляю ключевое слово Set
из строки Set ActiveWS.WS = ActiveSheet
, я получаю следующую ошибку:
Ошибка № 91: переменная объекта или переменная блока не установлена
Как мне это сделать, и возможно ли это вообще?
Я также думал об использовании ActiveSheet.CustomProperties, но это кажется довольно неуклюжим, поскольку вы не можете извлечь параметр по его имени (без циклического перебора всехэлементы), и вы должны полагаться на номера индекса.
Заранее спасибо.
Обновление : я должен добавить, что мой макрос будет сохранен как Excel Addпоэтому у меня не будет доступа к коду рабочих книг пользователей.Я не могу использовать событие Worksheet_Activate () для отслеживания активного листа.Кроме того, параметры настройки предпочтительно будут потеряны или сброшены на значения по умолчанию при повторном открытии книги, поэтому я не могу сохранить их в файле пользователя (например, на скрытом листе).