下記の記事を見て、同一ユーザーフォーム内のコントロールに共通するイベントをまとめるやり方を知りました。
https://excel-ubara.com/excelvba3/EXCELFORM023.html
現在、処理が似ているユーザーフォームが複数あります。
ただ微妙に処理が違うので、それぞれ別のユーザーフォームを作成しておりますが、何とか一つのクラスモジュールにできないか試行しております。
まずは複数のユーザーフォーム内で設定しているinitializeイベントのコードが重複していたので、ユーザーフォームそのものをクラス内でプロパティとして宣言し、initializeイベントを作ってみましたが、機能しません。
withEventで設定できないコントロールとして、exit,enterなどがありますが、msforms.userformもできないという理解でよろしいでしょうか?
下記のような感じで簡単に呼び出しています。
UserForm1は実際のユーザーフォームモジュールです。
(formClass.form.show ができなかったので、とりあえず、userForm1.showにしています。)
'formClassモジュール Option Explicit Private WithEvents pForm As MSForms.UserForm Public Property Set form(ByVal aForm As MSForms.UserForm) Set pForm = aForm End Property Private Sub pForm_Initialize() MsgBox "あいうえお" End Sub '標準モジュール Sub useClassUserForm() Dim formClass As formClass Set formClass = New formClass Set formClass.form = UserForm1 UserForm1.Show end sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/18 13:09
2021/09/19 15:15