質問: "変更" End With End With End Sub ``` クラス ``` Private WithEvents ctrlhenk As MSForms.CommandButton Private Sub ctrlhenk_Click() MsgBox "データ飛びました" End Sub ``` 以前「クラスの使い方を理解していない」というようなご指摘をいただき、自分なりに整理した結果上記のコードが出来たので、「〇〇を▽▽したい。」というような質問ではないですが、解決法はもちろん、「勘違いしてそうなところ」や「質問の仕方」、コツについてもご助言いただければ幸いです。 よろしくお願いします。
回答: 最初のコード例が間違ってますね。 下記のような雛形になります。(一つの例です。) ユーザフォーム ``` Private クラス変数 As New クラス名 Sub UserForm_Initialize() Dim ボタン変数 As CommandButton Set ボタン変数 = Me.Controls.Add("Forms.CommandButton.1", オブジェクト名, True) Call クラス変数.SetCtrl(ボタン変数) With ボタン変数 .Top = 100 ...省略(以下ボタンのプロパティ設定) End With End Sub ``` クラスモジュール【クラス名】 ``` Private WithEvents コントロール変数 As MSForms.CommandButton 'クラスにコントロールを登録するメソッド Public Sub SetCtrl(new_ctrl As CommandButton) Set コントロール変数 = new_ctrl End Sub Private Sub コントロール変数 _Click() ~処理~ End Sub ``` 機能(処理)が異なるコントロールは、それぞれ別にクラスを作成します。