ユーザーフォームを表示する(Load文,Showメソッド)
VBA のプログラムの中からユーザーフォームを表示する方法です。 Load メソッドを使ってユーザーフォームのオブジェクトをメモリに読み込み、そのあとで Show メソッドを使ってユーザーフォームを表示します。ここでは Excel のユーザーフォームで VBA を使ってユーザーフォームを表示する方法について解説します。
(Last modified: )
ユーザーフォームを表示する
ユーザーフォームを VBA のプログラムの中から表示するには、まずユーザーフォームをメモリに読み込み、そのあとで表示を行います。ユーザーフォームをメモリに読み込むには Load 文を使用します。書式は次のとおりです。
Load object
メモリに読み込むオブジェクトを指定してください。例えば作成済みの UserForm1 オブジェクトをメモリに読み込むには次のように記述します。
Option Explicit
Sub テスト()
Load UserForm1
End Sub
メモリに読み込んだユーザーフォームを表示するには Show メソッドを使用します。書式は次のとおりです。
[ object ].Show modal
modal は省略可能な値で、ユーザーフォームをモーダルで開くかどうかを指定します。デフォルトはモーダルです。これについてはあとで解説します。
メモリに読み込んだ UserForm1 オブジェクトを表示するには次のように記述します。
Option Explicit
Sub テスト()
Load UserForm1
UserForm1.Show
End Sub
なおユーザーフォームを表示するためにまず Load 文を使ってメモリに読み込み、そのあとで Show メソッドを使って表示すると記載しましたが、 Show メソッドを実行したときにメモリに読み込まれていなかった場合は自動的に読み込みが行われるので Load 文を省略して次のように記述しても構いません。
Option Explicit
Sub テスト()
UserForm1.Show
End Sub
それでは簡単なサンプルを作成して試してみます。
あらかじめ次のようなユーザーフォームを作成しています。オブジェクト名は UserForm1 です。
標準モジュールの中のモジュールに次のようにプログラムを記述しました。(モジュールを追加してコードウィンドウを表示する方法については「VBAプログラムの作成と実行」を参照されてください)。
Option Explicit
Sub テスト()
Load UserForm1
UserForm1.Show
End Sub
それではプログラムを実行してみます。「Sub/ユーザーフォームの実行」をクリックしてください。
プログラムが実行されてユーザーフォームがデフォルトのモーダルの状態で表示されました。
モーダルかモードレスかを指定してユーザーフォームを表示する
ユーザーフォームを表示するときにモーダルかモードレスかを指定することができます。モーダルの場合は、ユーザーフォームが開いている間は、ワークシートなどの操作ができなくなります。モードレスの場合はユーザーフォームが開いている間もワークシートにフォーカスを映して操作をすることができます。
モーダルカモードレスかを指定してユーザーフォームを表示する場合は、 Show メソッドの引数で指定してください。
[ object ].Show modal
modal に指定可能な値は次のどちらかです。
| 定数 | 値 | 説明 |
|---|---|---|
| vbModal | 1 | モーダルで表示します。 |
| vbModeless | 0 | モードレスで表示します。 |
modal を省略した場合は vbModal を指定したものとみなされるのでモーダルでユーザーフォームが表示されます。モードレスで表示したい場合は vbModeless を指定して次のように実行してください。
Option Explicit
Sub テスト()
UserForm1.Show vbModeless
End Sub
モーダルとモードレスの違い
それではモーダルとモードレスでユーザーフォームを表示した場合の違いについて確認してみます。モーダルでユーザーフォームを表示した場合、ワークシート上をクリックしても何も反応がありません。
それに対してモードレスでユーザーフォームを表示した場合、ワークシート上をクリックするとセルにフォーカスを移すことができ、編集も行うことができます。
このようにモーダルとモードレスではユーザーフォームを開いたあとの挙動がことなります。
-- --
Excel のユーザーフォームで VBA を使ってユーザーフォームを表示する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。