素人がExcelVBAによる「一人働き方改革」に挑むブログスマートフォン用の表示で見る素人がExcelVBAによる「一人働き方改革」に挑むブログExcelVBAネタです。VBA覚書ユーザーフォームをクラスっぽく使うユーザーフォームのテンプレート(?)前回のakashi-keirin.hatenablog.comで、ユーザーフォームもNewできると分かった。それが何の役に立つのか、イマイチよく分からないんだが、よく使うパターンのユーザーフォームのひな形を作っておいて、部分的に柔軟性を持たせたらいいんでね?と思ったので、実験してみた。ユーザーフォームのひな形を作る手の込んだものを作るのはメンドクサイので、次のようなものにした。オブジェクト名は「UserFormTemplate」とした。見ての通り、コマンドボタンを3つ設置。オブジェクト名は、左から順に「BtnLeft」。「BtnCenter」。「BtnRight」。今まで、ユーザーフォーム上のコントロールのオブジェクト名は「lblPersonName」みたいにキャメル記法を使っていたんだけど、"オブジェクト名"ってことはクラス名みたいなもんだから、パスカル記法の方が良いと思い直した。UserFormTemplateのモジュールに、次のコードを書いた。Subおなじみ、擬似コンストラクタのinitメソッド。ユーザーフォームの_Initializeメソッドも引数を持たせられないから、仕方なくこうした。btnRightNameは、いづれもMe、すなわちUserFormTemplateのインスタンスに対する処理。それぞれ、ユーザーフォーム、左ボタン、中央ボタン、右ボタンのキャプションに引数で渡された文字列をセットする。Newしてインスタンス化した後は、必ずこのinitメソッドを呼ぶ、という約束にする。このユーザーフォームを使うコードを標準モジュールに書く。UserFormTemplateで、UserFormTemplate型の変数uFrmを宣言。UserFormTemplateでUserFormTemplateをインスタンス化。クラスモジュールの使い方と同じ。"デコスケ"は、uFrmの擬似コンストラクタinitメソッドを、4つの引数を渡して実行。4つの引数は、前から順に、それぞれフォーム、左ボタン、中央ボタン、右ボタンのキャプションとなる。initメソッドで初期化をしたら、あとは(4)の.Showでフォームを表示しておしまい。それぞれキャプションが設定された状態で表示された。最後にユーザーフォームを用いたアプリで、似たようなフォームを多用するようなやつを作成するときになら、少しは役に立つかも知れんなあ。前に予定管理アプリみたいなのを自作した(させられた)ときにこの知識があったら、もう少しラクできていたかも。»プロフィールid:akashi_keirinExcelVBAネタです。SyntaxHighlighter.all();注目記事はてなブログをはじめよう!akashi_keirinさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。