2015-04-20 50 views
4

在Excel一个可以打开多个窗口来查看相同的工作簿:陷阱窗口关闭

  • 手动视图>新窗口
  • 或编程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