Я хочу выполнить действие в макросе книги Excel после определенного периода бездействия (скрыть / защитить некоторые листы). Каков наилучший / самый простой способ добиться этого?
Я предполагаю, что я буду использовать Application.OnTime
для периодической проверки активности пользователя. Но какие события я должен обработать, чтобы увидеть, был ли пользователь «активным» (т. Е. Что-то сделал - что-нибудь - с книгой)?
Разъяснение: я хочу обнаружить всю активность, а не только изменения. То есть включая щелчки мыши, выбор, копирование, навигацию с помощью клавиатуры, изменение таблиц, ...
Я предполагаю, что когда происходит событие пользовательского интерфейса, представляющее пользовательскую активность, я устанавливаю переменную таким образом:
LastActivityTime = Now
и макрос, запускаемый Application.OnTime
, проверит эту переменную, чтобы узнать, был ли пользователь в последнее время активным. Какие события (кроме SheetChange
) мне нужно обработать, чтобы установить эту переменную? Я надеялся, что будут события KeyUp
и MouseUp
, этих двух, вероятно, было бы достаточно.
Обновление: я реализовал это, обрабатывая Workbook_SheetActivate
, Workbook_SheetSelectionChange
и Workbook_WindowActivate
. Реально этого вполне достаточно.