在不同的工作簿中捕获事件

时间:2015-06-14 17:14:54

标签: vba excel-vba events excel

我想知道是否有可能在另一本工作簿中捕获一个事件。

宏将打开供用户使用的工作簿,我希望能够在其selection_change事件上运行另一个宏。不,代码无法存储在刚刚打开的工作簿中。

除了以编程方式将代码添加到已打开的工作簿的 ThisWorkbook 模块之外,还有其他方法吗?

这种方式不安全且不稳定,而且通常都很糟糕。

1 个答案:

答案 0 :(得分:1)

您只需要使用事件处理程序在类模块中获取对已打开工作簿的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