VBAのコードからユーザーフォームを表示するにはユーザーフォームオブジェクトのメンバである Show メソッドを使用します。
Showメソッドの使用方法
引数名 | 省略 | 説明 |
---|---|---|
Modal | ○ | ユーザーフォームの表示モードを指定します。 |
定数 | 値 | 説明 |
---|---|---|
vbModal | 1 | ユーザーフォームはモーダルです。
モーダルフォームを閉じるまで、アプリケーション内の他の部分は使用できません。 (既定値) |
vbModeless | 0 | ユーザーフォームはモードレスです。 フォームを表示した状態でアプリケーション内の他の部分を使用することができます。 |
Showメソッドの使用例
モーダルフォームの表示
前ページ(ユーザーフォームの作成 )で作成したフォームをモーダルで表示する例です。Show メソッドの引数に”vbModal”、または、”1″を指定しても同じです。
Sub test_uf013_01()
UserForm1.Show
End Sub
モーダルフォームはフォームを閉じるまでエクセルの操作(セルの編集など)ができなくなります。このため、ユーザーはフォームの操作に集中するようになります。主に、処理の途中でユーザーからの入力を受け付けたり、処理の判断を仰いだりする場合に使用されます。
モードレスフォームの表示
前ページ(ユーザーフォームの作成)で作成したフォームをモードレスで表示する例です。Show メソッドの引数に”vbModeless”、または、”0″を指定します。
Sub test_uf013_02()
UserForm1.Show vbModeless
End Sub
モードレスフォームはフォームを表示した状態で、エクセルの操作が可能です。このモードは主に、エクセル操作のサポートであったり、何かしらの情報を表示しておくような補助的なフォームの場合に使用します。
モーダル/モードレスの処理の違い
モーダルフォームの場合、そのフォームを閉じるまで処理が中断されるのに対し、モードレスフォームでは処理が中断されないことに注意してください。
Show メソッドの後にメッセージボックスを表示させてその違いを確認してみるとよいでしょう。
Sub test_uf013_03()
UserForm1.Show
MsgBox "test" 'フォームを閉じるまで表示されない
End Sub
Sub test_uf013_04()
UserForm1.Show vbModeless
MsgBox "test" 'フォームを閉じなくても表示される
End Sub
ボタンなどからフォームを表示する
ユーザーフォームを表示するプロシージャをワークシート上のボタンなどに割り当てたい場合は以下のページを参考にしてください。
【補足】ユーザーフォームを閉じる
これまでユーザーフォームを閉じるとき、フォーム右上の×ボタンを押下していましたが、ボタンを押してフォームを閉じたいと思う人もいるでしょう。その方法は非常に簡単ですのでここで説明します。
ユーザーフォームに閉じるボタンを追加
ユーザーフォームに『閉じる』ボタンを追加します。ボタンの追加方法は、前ページ(ユーザーフォームの作成)を参考にしてください。
ボタンのクリックイベントを設定する
その追加したボタンの右クリックから コードの表示 を選択し、追加されたボタンのクリックイベント内に” Unload Me “と記述するだけです。
F5 キーを押下するなどしてフォームを表示後、閉じる ボタンでユーザーフォームが閉じることを確認してください。