- Home ›
- Excel VBA入門 ›
- ダイアログ
ダイアログボックスのモーダルの種類を設定する
MsgBox 関数を使ってダイアログボックスを作成する場合、モーダルダイアログボックスとして表示されますが、アプリケーションモーダルとして表示するか、システムモーダルとして表示するかを選択することができます。ここでは Excel VBA でダイアログボックスのモーダルの種類を設定するする方法について解説します。
※ ダイアログボックスを作成する方法については「MsgBox関数を使ったダイアログボックスの表示」を参照されてください。
(Last modified: )
ダイアログボックスのモーダルの種類を設定する
MsgBox
関数でモーダルの種類を設定する場合、省略可能な 2 番目の引数でボタンの種類とあわせてアイコンの種類を設定します。
MsgBox (prompt, buttons)
設定可能な種類は次の通りです。
定義済み定数 | 値 | 説明 |
---|---|---|
vbApplicationModal | 0 | アプリケーションモーダル |
vbSystemModal | 4096 | システムモーダル |
アプリケーションモーダルを選択した場合、ダイアログボックスが表示されている間はダイアログボックスに対する以外の 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 となります。
それでは実際にプログラムを実行してみます。
ダイアログボックスが表示されました。今回はシステムモーダルに設定しているので、ダイアログボックスを閉じるまでは他のアプリケーションをアクティブにしても Excel のダイアログボックスが表示された状態となります。
-- --
Excel VBA でダイアログボックスのモーダルの種類を設定するする方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。