NIFTYの過去ログを眺めていたら、すっかり忘れていたネタが書かれていました。
「UserFormの名前を変数に入れて操作するにはどうしたらいいか」というネタです。
たとえば、"UserForm1"という名前のUserFormがあったとします。このUserFormを表示するには次のようにします。
Sub Sample1() UserForm1.Show End Sub
このとき「UserForm1.Show」の「UserForm1」は文字列ではなくオブジェクトの名前ですから、次のようにするとエラーになります。
Sub Sample2() Dim myForm As String myForm = "UserForm1" myForm.Show End Sub
変数にUserFormの名前を格納し、その変数を利用してUserFormを開くには次のようにします。
Sub Sample3() Dim myForm As String myForm = "UserForm1" UserForms.Add(myForm).Show End Sub
一見すると裏技のようですが、ちゃんとMicrosoftの技術情報で公開されています。
1997年とは古いですね(^^;
UserForm自体をオブジェクト変数に格納すると、同じUserFormを複数表示することも可能です。
UserForm1にCommandButtonを1つ配置して、次のようなマクロを作成してください。
Private Sub CommandButton1_Click() Dim myForm As UserForm1 Set myForm = UserForms.Add("UserForm1") myForm.Show End Sub
CommandButtonをクリックするたびに、自分自身(UserForm1)を開きます。