|
▼ichinose さん:
Resありがとうございます。
提示して頂いたコードでClass_Terminate()が実行されていることを
確認することができました。
ありがとうございました。
今回はMsgBoxで確認するコードをClass_Terminateにコメントアウトして追記しました。
'-------
'Class名 Cont_Coll
'Control Collectionの意
Private m_Coll As Collection 'Cont_Coll内部のコレクション
Private m_Item(3) As Coll_Event '子クラスの要素数を指定
'クラスが作成されたときにCollection作成
Private Sub Class_Initialize()
Set m_Coll = New Collection
End Sub
'コレクションへ追加するプロパティ
Public Property Let Con_Add(ByVal NewCont As MSForms.Control)
m_Coll.Add Item:=NewCont
Set m_Item(m_Coll.Count) = New Coll_Event
m_Item(m_Coll.Count).ContItem = NewCont
End Property
'コレクションをカウントするプロパティ
Public Property Get Con_Count()
Con_Count = m_Coll.Count
End Property
'コレクションItemを参照するプロパティ
Public Property Get Con_Item(ByRef m_Index As Integer)
Set Con_Item = m_Coll(m_Index)
End Property
Private Sub Class_Terminate()
Dim i As Integer
For i = 1 To m_Coll.Count
Set m_Item(i) = Nothing
Next i
'MsgBox "Cont_Coll開放" '確認用
End Sub
'-------
'Class名 Coll_Event
'Collction Eventの意
Private WithEvents Cont_obj As MSForms.CommandButton
Public Property Let ContItem(ByVal NewCont As MSForms.CommandButton)
Set Cont_obj = NewCont
End Property
Private Sub Class_Terminate()
'MsgBox Cont_obj.Caption & "のColl_Event開放" '確認用
End Sub
'ここからEvent処理を書く
Private Sub Cont_obj_Click()
MsgBox "クラスモジュールのイベント" & vbCr & Cont_obj.Caption
End Sub
|
|