2015-04-20 2 views
4

В Excel можно открыть более одного окна, чтобы просмотреть ту же книгу:Trap окно близко

  • вручную View>New Window
  • или программным ThisWorkBook.NewWindow и т.д.

Затем можно заблокировать изменение активации окна с помощью события Workbook_WindowDeactivate(ByVal Wn As Window).

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

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

+0

Понравилось. Никогда раньше не играл с этим «новым окном». –

+0

Могу я спросить * почему * вы пытаетесь уловить закрытие окон? –

ответ

0

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

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

+0

Спасибо за ответ. Это достаточно легко сделать, но я не могу использовать его, чтобы предотвратить закрытие окна в первую очередь. На основе какого-либо события или другого я мог бы сделать такое сканирование и открыть окно, если бы обнаружил, что его не существует (так было закрыто), но не совсем то, что я пытаюсь сделать. – user3486991

Смежные вопросы