在Excel一个可以打开多个窗口来查看相同的工作簿:陷阱窗口关闭
- 手动视图>新窗口
- 或编程
ThisWorkBook.NewWindow
等
然后可以通过Workbook_WindowDeactivate(ByVal Wn As Window)
事件捕获窗口激活中的更改。
但是Excel VBA中有没有办法检测用户是否试图关闭特定的窗口?
请注意,这是而不是与关闭整个工作簿相同。
在Excel一个可以打开多个窗口来查看相同的工作簿:陷阱窗口关闭
ThisWorkBook.NewWindow
等然后可以通过Workbook_WindowDeactivate(ByVal Wn As Window)
事件捕获窗口激活中的更改。
但是Excel VBA中有没有办法检测用户是否试图关闭特定的窗口?
请注意,这是而不是与关闭整个工作簿相同。
根据MSDN的Excel 2007中,“Windows集合Application对象包含应用程序...所有窗口”(参见here,但在MSDN断开的链接要小心 - 你可能必须寻找MSDN中的“窗口对象”)。
这听起来像你不关心检测用户窗体,所以可以使用Application.Windows集合。在事件期间循环所有窗口,并检查集合中的某个窗口是否符合您的条件,以查看该窗口是否打开。
感谢您的回复。这很容易做到,但我无法真正使用它来防止首先关闭窗口。在某些事件或其他事件的基础上,如果我发现它不存在(所以已经关闭),我可以做这种扫描并重新打开一个窗口,但不是我正在尝试做的事情。 – user3486991
明白了。从来没有玩过这个“新窗口”功能。 –
我可以问*你为什么要试图锁住窗户? –