構文
構文は以下の通りです。
モーダルフォームとして表示する場合の構文
解説
モーダルフォームを表示するには、UserForm1という名前のフォームのShowModalプロパティを設定します。UserForm1が表示されている間は、そのフォームがアクティブで他の操作ができなくなります。ユーザーがUserForm1を閉じるまで、他のExcelの操作はブロックされます。
モードレスフォームとして表示する場合の構文
解説
モードレスフォームを表示するには、UserForm1という名前のフォームをShowメソッドを呼び出します。モードレスフォームは、表示したまま他のExcelの操作を行うことができます。
使い方
具体的な使い方を以下に紹介します。
1.モーダルフォームとして表示する場合
UserForm1.ShowModal
End Sub
この例では、UserForm1という名前のフォームをモーダルとして表示します。ShowModalプロパティがTrue(デフォルト値)のため、ユーザーがUserForm1を閉じるまで、他の操作はできなくなります。
2.モードレスフォームとして表示する場合
UserForm1.Show
End Sub
この例では、UserForm1をモードレスとして表示します。ShowModalプロパティを指定しない場合は、デフォルトでFalse(モードレス)として扱われます。この場合、UserForm1を表示したまま、他のExcel操作を行うことができます。
プログラミング例
以下に、プログラミング例を幾つか紹介します。
例1: ユーザーに名前を入力させるモーダルフォーム
UserForm1.ShowModal
' モーダルフォームが閉じられた後に名前を表示
MsgBox "入力された名前は " & UserForm1.TextBox1.Value & " です。"
End Sub
この例では、ユーザーフォームが表示された後、モーダルとして名前を入力させ、OKボタンがクリックされるまで他の操作ができなくなります。フォームが閉じられた後に、入力された名前がメッセージボックスで表示されます。
例2: ユーザーフォームで数値計算を行うモードレスフォーム
UserForm1.Show
End Sub
Private Sub btnCalculate_Click()
Dim inputNumber As Double
inputNumber = CDbl(UserForm1.TextBox1.Value)
' 計算結果を表示
MsgBox "入力された数値の2倍は " & inputNumber * 2 & " です。"
End Sub
この例では、ユーザーフォームがモードレスで表示され、他の操作も行えるようになります。フォーム内のテキストボックスに数値を入力し、「計算」ボタンをクリックすると、入力された数値の2倍を計算して結果がメッセージボックスで表示されます。
まとめ
フォームのモーダルとモードレスを使い分けることで、ユーザーの操作性を向上させることができます。モーダルは、フォームの入力が完了するまで他の操作を防ぎ、データの正確性を高める際に適しています。一方、モードレスは、フォームの情報を参照しながら他の操作を行いたい場合に便利です。是非活用してください。