【发布时间】:2015-11-14 19:07:50
【问题描述】:
我想知道是否可以在另一个工作簿中捕获事件。
一个宏将打开一个工作簿供用户使用,我希望能够在其 selection_change 事件上运行另一个宏。不,代码不能存储在刚刚打开的工作簿中。
除了以编程方式将代码添加到打开的工作簿的 ThisWorkbook 模块之外,还有其他方法吗?
这种方式是不安全和不稳定的,而且通常是 bleh。
【问题讨论】:
我想知道是否可以在另一个工作簿中捕获事件。
一个宏将打开一个工作簿供用户使用,我希望能够在其 selection_change 事件上运行另一个宏。不,代码不能存储在刚刚打开的工作簿中。
除了以编程方式将代码添加到打开的工作簿的 ThisWorkbook 模块之外,还有其他方法吗?
这种方式是不安全和不稳定的,而且通常是 bleh。
【问题讨论】:
您只需使用事件处理程序在类模块中获取对已打开工作簿的WithEvents 引用。例如:
'In ThisWorkbook
Option Explicit
Private WithEvents other As Worksheet
Private Sub Example()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Dev\other.xlsx")
Set other = wb.Sheets("Sheet1")
End Sub
Private Sub other_SelectionChange(ByVal Target As Range)
Debug.Print Target.Address
End Sub
【讨论】: