フォームを表示する
今までフォームを作成する方法を少し見てきましたが、実際にフォームを使うには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 )