Microsoft Access 掲示板

クラスモジュールについて / 4

9 コメント
views
4 フォロー
4

質問のコード、実際には動作しませんね。
動作確認済みのコードかと思って回答コード書きましたが、これでは動きません。

ctl.OnClick = "[イベント プロシージャ]" とイベントとVBAを関連付けるコードはクラスモジュール内に書かないと動かないです。
サンプル作成して気が付きました。

下記は動作確認済みです。

クラスモジュール Class1

POption Compare Database
Option Explicit

Private WithEvents コマンド As CommandButton
Private WithEvents テキスト As TextBox

`初期化メソッド
Public Sub Init(objコマンド As CommandButton, objテキスト As TextBox)
    Set コマンド = objコマンド
    Set テキスト = objテキスト
    コマンド.OnClick = "[イベント プロシージャ]"
End Sub

Public Sub コマンド_Click()
    Debug.Print "クリック"
    テキスト.Value = IIf(Nz(テキスト.Value) = "有", "無", "有")
End Sub

フォームモジュール

Private Sub Form_Load()
    Static co As New Collection    'Class1保存用
    Dim ctl As Control
    For Each ctl In Me.Controls
        If Left(ctl.Name, 3) = "txt" Then
            Dim cls As Class1
            Set cls = New Class1
            cls.Init Me.Controls("cmd" & Mid(ctl.Name, 4)), ctl
            co.Add cls
        End If
    Next
End Sub

通報 ...