ダイアログボックスのモーダルの種類を設定する

MsgBox 関数を使ってダイアログボックスを作成する場合、モーダルダイアログボックスとして表示されますが、アプリケーションモーダルとして表示するか、システムモーダルとして表示するかを選択することができます。ここでは Excel VBA でダイアログボックスのモーダルの種類を設定するする方法について解説します。

※ ダイアログボックスを作成する方法については「MsgBox関数を使ったダイアログボックスの表示」を参照されてください。

(Last modified: )

ダイアログボックスのモーダルの種類を設定する

MsgBox 関数でモーダルの種類を設定する場合、省略可能な 2 番目の引数でボタンの種類とあわせてアイコンの種類を設定します。

MsgBox (prompt, buttons)

設定可能な種類は次の通りです。

定義済み定数説明
vbApplicationModal0アプリケーションモーダル
vbSystemModal4096システムモーダル

アプリケーションモーダルを選択した場合、ダイアログボックスが表示されている間はダイアログボックスに対する以外の Excel の操作は行えなくなりますが、他のアプリケーションは自由に操作することができます。システムモーダルを選択した場合、ダイアログボックスが表示されている間は他のアプリケーションを操作しようとした場合もダイアログボックスが表示され続けます。特に設定しない場合はアプリケーションモーダルとなります。

例えば vbOKCancel ボタンのダイアログでシステムモーダルを選択する場合、 MsgBox の 2 番目の引数に次のように記述します。

Option Explicit

Sub MsgBox関数()
    Dim res As Integer
    res = MsgBox("実行しますか?", vbOKCancel + vbSystemModal)
End Sub

又は Or 演算子を使って次のように記述してもいいです。

Option Explicit

Sub MsgBox関数()
    Dim res As Integer
    res = MsgBox("実行しますか?", vbOKCancel Or vbSystemModal)
End Sub

どちらの方法であっても今回の場合は vbOKCancel の値は 1 で vbQuestion の値は 4096 のため、 2 番目の引数は 4097 となります。

それでは実際にプログラムを実行してみます。

ダイアログボックスのモーダルの種類を設定する(1)

ダイアログボックスが表示されました。今回はシステムモーダルに設定しているので、ダイアログボックスを閉じるまでは他のアプリケーションをアクティブにしても Excel のダイアログボックスが表示された状態となります。

-- --

Excel VBA でダイアログボックスのモーダルの種類を設定するする方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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