質問のコード、実際には動作しませんね。
動作確認済みのコードかと思って回答コード書きましたが、これでは動きません。
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
通報 ...