お世話になります。
VBAを始めて3週間ほどの者です。
ユーザーフォームに動的にコマンドボタンを設置し、
さらにクリックイベントを付与したいと思っております。
ユーザーフォームのInitializeイベントの中で呼び出している「checkClmn」という
関数内で下記のコードを記述しております。
Private Sub UserForm_Initialize() Application.ScreenUpdating = False 'ユーザーフォームのCaptionにシート名(テーブル名)を入れる ufrmValueInput.Caption = ActiveSheet.Name 'セルB3(固定)からカラム名の取得を開始する Call checkClmn Application.ScreenUpdating = True End Sub
当初はオリジナルのクラスを作成せずに、
動的作成コントロールにイベントを作成する
↑こちらのサイトを参考にさせていただき、WithEventsキーワードを使って、
Dim WithEvents btn_rst As MSForms.CommandButton Set btn_rst = Controls.Add("Forms.CommandButton.1", "btn_rst" & now_cell_ad)
と記述したのですが、
コードを記述する黒い画面のすぐ上にありますオブジェクトボックスの中に、
「btn_rst 」(コマンドボタンのオブジェクト)が現れず、
上記の方法を辞めて、クラスを作成しました。
クラスモジュール(クラス名「clsOpbtnRst」)に
Option
1Private WithEvents btnRst As MSForms.CommandButton 2Private usr_frm As MSForms.UserForm 3 4'対応するコントロールを設定する 5Public Sub setEvent(new_ctrl As MSForms.CommandButton) 6 Set btnRst = new_ctrl 7End Sub 8 9Private Sub btnRst_Click() 10 MsgBox "OK" 11End Sub
そして、ユーザーフォームのUserForm_Initialize()の関数checkClmn内(先程と同じ場所)に、
Dim WithEvents btn_rst As MSForms.CommandButton Set btn_rst = Controls.Add("Forms.CommandButton.1", "btn_rst" & now_cell_ad) Dim cls_oprst_obj As clsOpbtnRst Set cls_oprst_obj = New clsOpbtnRst cls_oprst_obj.setEvent btn_rst
と記述しました。
すると、コマンドボタンは作成されるのですが、
押しても何も反応せず、メッセージボックスは表示されません。エラーも発生しませんでした。
デバックのF8で一つずつ進めると、きちんとクラスを認識して処理をしてくれているようですが(↓)
コマンドボタンをクリックしても、何も反応せずエラーも出ず、
クラス内のイベントプロシージャに黄色い矢印が表示されません。(↓)
長文すみません!
エラーが発生しないため、途方に暮れております。
どなたか、イベントプロシージャを実行できる方法をご教示いただけますと大変ありがたいです。
どうかよろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/09 00:35
2022/03/09 00:48
2022/03/09 00:56
2022/03/09 01:10