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)を開きます。