Ловушка закрыть окно

В Excel можно открыть несколько окон для просмотра одной и той же книги:

  • вручную Открыть > Новое окно
  • или программно ThisWorkBook.NewWindow и т. д.

Затем можно Workbook_WindowDeactivate(ByVal Wn As Window) изменение активации окна через событие Workbook_WindowDeactivate(ByVal Wn As Window) .

Но есть ли способ в Excel VBA обнаружить, пытается ли пользователь закрыть конкретное окно?

Обратите внимание, что это не то же самое, что закрытие всей книги.

Согласно MSDN для Excel 2007, « Коллекция Windows для объекта Application содержит все окна в приложении … » ( здесь , но остерегайтесь неработающих ссылок в MSDN – вам может понадобиться искать «Объект Window» в MSDN ).

Похоже, что вы не занимаетесь обнаружением пользовательской формы, поэтому можно использовать коллекцию Application.Windows. Прокрутите все окна во время события и проверьте, соответствует ли окно в коллекции вашим критериям, чтобы увидеть, открыто ли это окно.

Давайте будем гением компьютера.