ユーザーフォームを表示する(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 です。

ユーザーフォームを表示する(1)

標準モジュールの中のモジュールに次のようにプログラムを記述しました。(モジュールを追加してコードウィンドウを表示する方法については「VBAプログラムの作成と実行」を参照されてください)。

Option Explicit

Sub テスト()
    Load UserForm1
    UserForm1.Show
End Sub

ユーザーフォームを表示する(2)

それではプログラムを実行してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

ユーザーフォームを表示する(3)

プログラムが実行されてユーザーフォームがデフォルトのモーダルの状態で表示されました。

ユーザーフォームを表示する(4)

モーダルかモードレスかを指定してユーザーフォームを表示する

ユーザーフォームを表示するときにモーダルかモードレスかを指定することができます。モーダルの場合は、ユーザーフォームが開いている間は、ワークシートなどの操作ができなくなります。モードレスの場合はユーザーフォームが開いている間もワークシートにフォーカスを映して操作をすることができます。

モーダルカモードレスかを指定してユーザーフォームを表示する場合は、 Show メソッドの引数で指定してください。

[ object ].Show modal

modal に指定可能な値は次のどちらかです。

定数説明
vbModal1モーダルで表示します。
vbModeless0モードレスで表示します。

modal を省略した場合は vbModal を指定したものとみなされるのでモーダルでユーザーフォームが表示されます。モードレスで表示したい場合は vbModeless を指定して次のように実行してください。

Option Explicit

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

モーダルとモードレスの違い

それではモーダルとモードレスでユーザーフォームを表示した場合の違いについて確認してみます。モーダルでユーザーフォームを表示した場合、ワークシート上をクリックしても何も反応がありません。

モーダルとモードレスの違い(1)

それに対してモードレスでユーザーフォームを表示した場合、ワークシート上をクリックするとセルにフォーカスを移すことができ、編集も行うことができます。

モーダルとモードレスの違い(2)

モーダルとモードレスの違い(3)

このようにモーダルとモードレスではユーザーフォームを開いたあとの挙動がことなります。

-- --

Excel のユーザーフォームで VBA を使ってユーザーフォームを表示する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。