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