EXCEL VBAメモ - 自作のクラスにイベントを追加する
MyClassオブジェクトのメンバ変数m_dataが5以上になるとOverflowイベントを発生する。
標準モジュールではイベント処理が記述できないので、シートモジュールかユーザーフォームで記述する。
MyClass(クラスモジュール)
Private m_data As Long ' Overflowイベント追加 Public Event Overflow(ByVal sender As Object) Private Sub Class_Initialize() m_data = 0 End Sub Private Sub Class_Terminate() 'do_anything End Sub Public Property Get data() As Long data = m_data End Property Public Property Let data(d As Long) m_data = d If m_data >= 5 Then RaiseEvent Overflow(Me) 'イベント発生 End Property Public Sub Increment() m_data = m_data + 1 If m_data >= 5 Then RaiseEvent Overflow(Me) ' イベント発生 End Sub
シートモジュールまたはユーザーフォーム
Private WithEvents Obj As MyClass ' ObjのOverflowイベント処理 Private Sub Obj_Overflow(ByVal sender As Object) MsgBox "OverFlow" & vbCrLf & _ "Sender : " & TypeName(sender) End Sub Sub Sample() Set Obj = New MyClass Obj.data = 4 Obj.Increment 'm_dataが5になりイベント発生 End Sub