基本的なクラスの使い方について質問です。
commandボタンのコントロールをクラスに格納する時の手順(コードの書き方)として以下のように記憶していました。
【ユーザーフォーム:上部】 Private コントロール名 As New クラス名(クラスの題名) 【ユーザーフォーム:下部】 Dim ボタン名 As CommandButton Set ボタン名 = フォーム名.Controls.Add("Forms.CommandButton.1", オブジェクト名, True) Call コントロール名(ボタン名) フォーム名.Controls.Add("Forms.CommandButton.1", オブジェクト名, True).Top ...省略(以下ボタンのプロパティ) End Sub 【クラスモジュール:上部】 Private WithEvents コントロール名 As MSForms.CommandButton 【クラスモジュール:下部】 Private Sub ボタン名_Click() ~処理~ End Sub
これをふまえ、以下の様なコードを作成しましたが、「変数ではなくプロシージャを指定してください。」というエラーが発生してしまいます。
(問題個所にコメントで「※ここです」と記載しました。)
フォーム
Private ctrlhenk As New Class1 Sub UserForm_Initialize() With UserForm1 Dim henbtn As CommandButton Set henbtn = .Controls.Add("Forms.CommandButton.1", "HEN", True) Call ctrlhenk(henbtn)※ここです。 With henbtn .Top = Top + 50 .Left = 230 .Height = 20 .Width = 100 .Caption = "変更" End With End With End Sub
クラス
Private WithEvents ctrlhenk As MSForms.CommandButton Private Sub ctrlhenk_Click() MsgBox "データ飛びました" End Sub
以前「クラスの使い方を理解していない」というようなご指摘をいただき、自分なりに整理した結果上記のコードが出来たので、「〇〇を▽▽したい。」というような質問ではないですが、解決法はもちろん、「勘違いしてそうなところ」や「質問の仕方」、コツについてもご助言いただければ幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー