我创建了一个小宏来返回唯一值的数量,并在选择范围时将其显示在 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
本工作簿
Option Explicit
Dim myobject As New ExcelEventCapture
Sub Workbook_Open()
Set myobject.ExcelApp = Application
End Sub
我错过了什么?谢谢
最佳答案
Application 中不存在
SelectionChange
事件类(class)。
您可以使用SheetSelectionChange事件,无需检查 Target
类名。
Private Sub ExcelApp_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.StatusBar = "Unique Count: " & CountUnique(Target)
End Sub
关于vba - 为什么应用程序级别的 SelectionChange 事件不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38065835/