| 
    
     |  | みなさまこんにちは。 
 あまり使う機会はないかもしれませんが、
 フォーム上に存在するコントロールのイベントをまとめて処理する方法です。
 以下にテキストボックスを使用した例を挙げてみます。
 
 '**********************************************************
 '*        クラスモジュール CEvent         *
 '**********************************************************
 Option Compare Database
 Option Explicit
 
 Private WithEvents MyTextBox As ACCESS.TextBox
 
 Public Property Set SetEvent(ByVal Obj As ACCESS.TextBox)
 Set MyTextBox = Obj
 MyTextBox.OnDblClick = "[Event Procedure]"
 MyTextBox.AfterUpdate = "[Event Procedure]"
 Set Obj = Nothing
 End Property
 
 Private Sub MyTextBox_AfterUpdate()
 MsgBox "更新後処理"
 End Sub
 
 Private Sub MyTextBox_DblClick(Cancel As Integer)
 MsgBox "ダブルクリック"
 End Sub
 
 
 上記コードをクラスモジュールに記載し、「CEvent」という名前で保存します。
 
 
 '***********************************************************
 '*           フォーム側処理           *
 '***********************************************************
 
 Option Compare Database
 Option Explicit
 Dim MyEvent() As CEvent
 
 Private Sub Form_Load()
 Dim Cntl As Control
 Dim i As Long
 
 For Each Cntl In Me.Controls
 If Cntl.ControlType = acTextBox Then
 ReDim Preserve MyEvent(i)
 Set MyEvent(i) = New CEvent
 Set MyEvent(i).SetEvent = Cntl
 i = i + 1
 End If
 Next
 End Sub
 
 フォームの読み込み時の処理に上記を記載します。
 
 フォーム上の全てのテキストボックスの「ダブルクリック時」「更新後処理」が
 取得できていると思われます。
 
 
 |  |