Excel 如何制作';工作簿窗口激活';当我';我使用双显示器?
当我将窗口从工作簿切换到同一屏幕中的另一工作簿时,可以成功调用此触发器(以及工作簿\u WindowDectivate),但当我切换到另一屏幕中的工作簿时,此触发器不起作用。 似乎它们属于两个不同的进程,我可以在任务管理器中找到2个Excel.exe 我的一个工作簿中有很多数据和切片器,这使得我的工作表运行非常缓慢,但我需要保持全局设置“自动计算”。 所以我试着用一个宏来消除它的计算。 我在工作时经常在两个屏幕上打开多个窗口,因此我的目的是在另一个屏幕上关注工作簿时调用此宏。假设有两个不同的进程,则无法调用此宏 这是两个不同的Excel 如何制作';工作簿窗口激活';当我';我使用双显示器?,excel,vba,Excel,Vba,当我将窗口从工作簿切换到同一屏幕中的另一工作簿时,可以成功调用此触发器(以及工作簿\u WindowDectivate),但当我切换到另一屏幕中的工作簿时,此触发器不起作用。 似乎它们属于两个不同的进程,我可以在任务管理器中找到2个Excel.exe 我的一个工作簿中有很多数据和切片器,这使得我的工作表运行非常缓慢,但我需要保持全局设置“自动计算”。 所以我试着用一个宏来消除它的计算。 我在工作时经常在两个屏幕上打开多个窗口,因此我的目的是在另一个屏幕上关注工作簿时调用此宏。假设有两个不同的进程
Excel.Application
实例,每个实例都有自己的工作簿
集合:您可以将一个实例称为“Vegas”,并说“在Vegas发生的事情,留在Vegas”
除非。。。除非您的代码完全拥有该其他实例:
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
),但可能是不可靠或棘手的