为什么在应用程序级别的SelectionChange事件不起作用?

我创build了一个小macros来返回唯一值的数量,并在select范围时将其显示在Excel的状态栏中。 这在文档级别正常工作。 但是,当我尝试在应用程序级别运行SelectionChange事件时,它不会启动。 以下是我的。

类模块“ExcelEventCapture”

 Option Explicit Public WithEvents ExcelApp As Application Private Sub ExcelApp_SelectionChange(ByVal Target As Range) If TypeName(Target) = "Range" Then Application.StatusBar = "Unique Count: " & CountUnique(Target) End If End Sub Private Function CountUnique(rng As Range) As Long Dim dict As Dictionary Dim cell As Range Set dict = New Dictionary For Each cell In rng.Cells If cell.Value2 <> 0 Then If Not dict.Exists(cell.Value) Then dict.Add cell.Value, 0 End If End If Next CountUnique = dict.Count End Function 

的ThisWorkbook

 Option Explicit Dim myobject As New ExcelEventCapture Sub Workbook_Open() Set myobject.ExcelApp = Application End Sub 

我错过了什么? 谢谢

SelectionChange事件在Application类中不存在。

您可以使用SheetSelectionChange事件,并且不需要检查Target类名称。

 Private Sub ExcelApp_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.StatusBar = "Unique Count: " & CountUnique(Target) End Sub