ユーザーフォームを表示する(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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。