フォームを表示する

広告

今までフォームを作成する方法を少し見てきましたが、実際にフォームを使うにはExcel上からフォームの表示を呼び出す必要があります。まずはVBAを使ってフォームの表示を行う方法を確認します。

フォームを表示するには「Show」メソッドを使います。

UserForm オブジェクトを表示します。

引数:
  object  省略可能です。ユーザーフォームのオブジェクトを指定します。
    引数 object を省略した場合は、アクティブなユーザーフォームに対
    応するオブジェクトとなります。
  modal  省略可能です。ユーザー フォームがモーダルかモードレスかを
    示す値を指定します。

オブジェクトには作成したフォームのオブジェクト名を指定します。

フォームが表示されるにはフォームがメモリに読み込まれている必要があります。ただ「Show」メソッドを実行すると自動的にフォームがメモリに読み込まれた後で表示が行われます。

オブジェクト名の設定

作成したフォームのオブジェクト名を指定する方法を確認しておきましょう。

まず適当なフォームを作成して、コントロールも適当に配置しておいて下さい。次にVBEの画面上でプロパティウィンドウを表示させた状態でフォームをクリックして下さい。フォームに関するプロパティが表示されます。一番上に表示されているのがこのフォームのオブジェクト名になります。

フォームを表示する

プロパティはプロパティウィンドウ上で編集が可能です。今回はオブジェクト名を「sampleForm」に変更します。

フォームを表示する

フォームのオブジェクト名が決まったらVBAのプロシージャ内から次のようにフォームを表示させることができます。

Sub テスト()
    sampleForm.Show
End Sub

モーダルの設定

フォームが画面上に表示された時にモーダルかモードレスかどちらの状態で表示させるかを指定出来ます。引数に指定可能な値は次の通りです。

定数内容
vbModalモーダルで表示(デフォルト値)
vbModelessモードレスで表示

「モーダル」とはフォームが表示されている間はフォーム以外の操作が出来ない状態です。「モードレス」とはフォームが表示されている間もシートなどの他の操作が出来る状態です。

モードレスでフォームを表示するには引数に「vbModeless」を指定して次のように記述します。

Sub テスト()
    sampleForm.Show(vbModeless)
End Sub

サンプルプログラム

では簡単なサンプルで試してみましょう。

testForm1.bas

Sub テスト()
    sampleForm.Show
End Sub

上記マクロを実行すると次のようになります。

フォームを表示する

( Written by Tatsuo Ikura )