excel - 使用双显示器时如何调用“Workbook_WindowActivate”?
问题描述
当我在同一个屏幕中将窗口从工作簿切换到另一个工作簿时,可以成功调用此触发器(和 Workbook_WindowDectivate),但是当我切换到另一个屏幕中的工作簿时,它不起作用。似乎它们属于2个不同的进程,我可以在任务管理器中找到2个Excel.exe。
我的一个工作簿中有很多数据和很多切片器,这使我的工作表运行非常缓慢,但我需要保持全局设置“自动计算”。所以我正在尝试使用宏来禁用它的计算。我在工作时经常在 2 个屏幕中打开多个窗口,所以我的目的是让这个宏在我专注于另一个屏幕中的工作簿时可以被调用。
解决方案
假设有两个不同的过程,你不能。
这是 的两个不同实例Excel.Application
,每个实例都有自己的Workbooks
集合:您可以将一个实例称为“维加斯”,并说“维加斯发生的事情,留在维加斯”。
除非...除非您的代码完全拥有该其他实例:
Private WithEvents OtherExcel As Excel.Application
Private Sub Workbook_Open()
Set OtherExcel = New Excel.Application
OtherExcel.Visible = True
End Sub
Private Sub OtherExcel_WindowActivate(Wb As Workbook, Wn As Window)
End Sub
Private Sub OtherExcel_WindowDeactivate(Wb As Workbook, Wn As Window)
End Sub
...有一些警告:
- 它每次都会打开一个新的 Excel 实例
- 它不会处理第三个实例
- 如果执行上下文死了,
OtherExcel
对象就消失了- 每当 VBE 决定代码更改需要重新编译时,执行上下文就会终止
- 或者每当发生未处理的错误时
- 或者
End
遇到语句时
- 如果
OtherExcel
实例关闭,则对象消失;如果随后启动另一个实例,则该OtherExcel
对象仍然消失。
OtherExcel
您可以通过公开一个按需重新分配的宏来解决这些限制。“附加”对OtherExcel
已经运行的 Excel 的第二个实例的引用可能已经完成(GetObject
想到),但可能不可靠或棘手。
推荐阅读
- angularjs - 无法使用量角器单击 mat-checkbox
- python - Python:使用 .loc[] 从具有 DatetimeIndex 的数据框中排除一年
- python - 如何在 django 中设置 google OAuth 的详细指南?
- php - HTML 如果第一个选项被禁用,则选择不发布
- c - UDP套接字创建和通信是否应该只在主函数中完成?
- javascript - Console.log() 和 el.innerText 立即重置(帮助)
- django - Django - 在使用 unique=True 保存时处理 URLField 的额外斜线
- reactjs - 反应js中的范围派克
- jruby - 适用于 OpenJDK 8 (Zulu JDK) 的 Jruby 版本
- php - 没有“where”的查询仍然处理“where”