2
私は、一意の値の数を返し、範囲が選択されたときにExcelのステータスバーに表示する小さなマクロを作成しました。これは、ドキュメントレベルで正常に動作します。ただし、アプリケーションレベルで実行しようとすると、SelectionChange
イベントは起動しません。以下は私が持っているものです。アプリケーションレベルの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
私は何をしないのですか?ありがとう