フォームを表示する
今までフォームを作成する方法を少し見てきましたが、実際にフォームを使うにはExcel上からフォームの表示を呼び出す必要があります。まずはVBAを使ってフォームの表示を行う方法を確認します。
フォームを表示するには「Show」メソッドを使います。
object.Show(modal)
UserForm オブジェクトを表示します。
引数:
object 省略可能です。ユーザーフォームのオブジェクトを指定します。
引数 object を省略した場合は、アクティブなユーザーフォームに対
応するオブジェクトとなります。
modal 省略可能です。ユーザー フォームがモーダルかモードレスかを
示す値を指定します。
オブジェクトには作成したフォームのオブジェクト名を指定します。
フォームが表示されるにはフォームがメモリに読み込まれている必要があります。ただ「Show」メソッドを実行すると自動的にフォームがメモリに読み込まれた後で表示が行われます。
オブジェクト名の設定
作成したフォームのオブジェクト名を指定する方法を確認しておきましょう。
まず適当なフォームを作成して、コントロールも適当に配置しておいて下さい。次にVBEの画面上でプロパティウィンドウを表示させた状態でフォームをクリックして下さい。フォームに関するプロパティが表示されます。一番上に表示されているのがこのフォームのオブジェクト名になります。
プロパティはプロパティウィンドウ上で編集が可能です。今回はオブジェクト名を「sampleForm」に変更します。
フォームのオブジェクト名が決まったらVBAのプロシージャ内から次のようにフォームを表示させることができます。
Sub テスト()
sampleForm.Show
End Sub
モーダルの設定
フォームが画面上に表示された時にモーダルかモードレスかどちらの状態で表示させるかを指定出来ます。引数に指定可能な値は次の通りです。
| 定数 | 内容 |
|---|---|
| vbModal | モーダルで表示(デフォルト値) |
| vbModeless | モードレスで表示 |
「モーダル」とはフォームが表示されている間はフォーム以外の操作が出来ない状態です。「モードレス」とはフォームが表示されている間もシートなどの他の操作が出来る状態です。
モードレスでフォームを表示するには引数に「vbModeless」を指定して次のように記述します。
Sub テスト()
sampleForm.Show(vbModeless)
End Sub
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト()
sampleForm.Show
End Sub
上記マクロを実行すると次のようになります。
( Written by Tatsuo Ikura )
OfficePro