- Home ›
- Excel VBA入門 ›
- ダイアログ
ダイアログボックスに表示するボタンの種類を選択する
MsgBox 関数を使ってダイアログボックスを作成する場合、あらかじめ用意された種類の中から使用するボタンの種類を選択することができます。メッセージや注意を表示する場合はダイアログボックスを閉じるための「OK」ボタンだけあればいいですが、ファイル削除の確認などの場合は「はい」や「いいえ」などのボタンを表示します。ここでは Excel VBA でダイアログボックスに表示するボタンの種類を選択する方法について解説します。
※ ダイアログボックスを作成する方法については「MsgBox関数を使ったダイアログボックスの表示」を参照されてください。
(Last modified: )
目次
ダイアログボックスのボタンの種類を選択する
MsgBox 関数では省略可能な 2 番目の引数にボタンの種類を設定することができます。
MsgBox (prompt, buttons)
設定可能な種類は次の通りです。
| 定義済み定数 | 値 | 説明 |
|---|---|---|
| vbOKOnly | 0 | 「OK」ボタン |
| vbOKCancel | 1 | 「OK」、「キャンセル」ボタン |
| vbAbortRetryIgnore | 2 | 「中止」、「再試行」、「無視」 |
| vbYesNoCancel | 3 | 「はい」、「いいえ」、「キャンセル」 |
| vbYesNo | 4 | 「はい」、「いいえ」 |
| vbRetryCancel | 5 | 「再試行」、「キャンセル」 |
省略した場合のデフォルトは vbOKOnly となっており「OK」ボタンだけが表示されます。
いずれかのボタンがダイアログボックスでクリックされると、 MsgBox 関数の戻り値としてクリックされたボタンを表す値が返されます。どのボタンをクリックするとどの値が返ってくるのかは次のように定義されています。
| 定義済み定数 | 値 | 説明 |
|---|---|---|
| vbOK | 1 | 「OK」ボタン |
| vbCancel | 2 | 「キャンセル」ボタン |
| vbAbort | 3 | 「中止」ボタン |
| vbRetry | 4 | 「再試行」ボタン |
| vbIgnore | 5 | 「無視」ボタン |
| vbYes | 6 | 「はい」ボタン |
| vbNo | 7 | 「いいえ」ボタン |
例えば「vbOKCancel」ボタンを使ったダイアログボックスを表示した場合、ボタンは「OK」と「キャンセル」が表示されます。どちらのボタンがクリックされたのかを判定するには次のように記述することができます。
Option Explicit
Sub MsgBox関数()
Dim res As Integer
res = MsgBox("実行しますか?", vbOKCancel)
If ans = vbOK Then
'OKボタンがクリックされたときの処理
Else
'キャンセルボタンがクリックされたときの処理
End If
End Sub
それではボタンの種類を指定したときに実際にどのように表示されるのか確認してみます。
vbOKOnly(OKボタン)
MsgBox 関数の 2 番目の引数を省略するか、または vbOKOnly を指定した場合です。
Option Explicit
Sub MsgBox関数()
Dim res As Integer
res = MsgBox("完了しました", vbOKOnly)
End Sub
このプログラムを実行すると次のようなダイアログボックスが表示され「OK」ボタンだけが表示されます。
vbOKCancel(OKボタン、キャンセルボタン)
MsgBox 関数の 2 番目の引数に vbOKCancel を指定した場合です。
Option Explicit
Sub MsgBox関数()
Dim res As Integer
res = MsgBox("保存してよろしいでしょうか?", vbOKCancel)
End Sub
このプログラムを実行すると次のようなダイアログボックスが表示され「OK」ボタンと「キャンセル」ボタンが表示されます。
vbAbortRetryIgnore(中止ボタン、再試行ボタン、無視ボタン)
MsgBox 関数の 2 番目の引数に vbAbortRetryIgnore を指定した場合です。
Option Explicit
Sub MsgBox関数()
Dim res As Integer
res = MsgBox("失敗しました。再度実行しますか?", vbAbortRetryIgnore)
End Sub
このプログラムを実行すると次のようなダイアログボックスが表示され「中止」ボタン、「再試行」ボタン、「無視」ボタンが表示されます。
vbYesNoCancel(はいボタン、いいえボタン、キャンセルボタン)
MsgBox 関数の 2 番目の引数に vbYesNoCancel を指定した場合です。
Option Explicit
Sub MsgBox関数()
Dim res As Integer
res = MsgBox("ファイルを削除します。宜しいですか?", vbYesNoCancel)
End Sub
このプログラムを実行すると次のようなダイアログボックスが表示され「はい」ボタン、「いいえ」ボタン、「キャンセル」ボタンが表示されます。
vbYesNo(はいボタン、いいえボタン)
MsgBox 関数の 2 番目の引数に vbYesNo を指定した場合です。
Option Explicit
Sub MsgBox関数()
Dim res As Integer
res = MsgBox("終了します。宜しいですか?", vbYesNo)
End Sub
このプログラムを実行すると次のようなダイアログボックスが表示され「はい」ボタンと「いいえ」ボタンが表示されます。
vbRetryCancel(再試行ボタン、キャンセルボタン)
MsgBox 関数の 2 番目の引数に vbRetryCancel を指定した場合です。
Option Explicit
Sub MsgBox関数()
Dim res As Integer
res = MsgBox("ファイルの読み込みに失敗しました", vbRetryCancel)
End Sub
このプログラムを実行すると次のようなダイアログボックスが表示され「再試行」ボタンと「キャンセル」ボタンが表示されます。
デフォルトボタンを設定する
複数のボタンが表示されるダイアログボックスを作成した場合、一番左に表示されているボタンがデフォルトボタンとなります。例えば MsgBox 関数の 2 番目の引数に vbYesNoCancel を指定した場合は「はい」ボタンがデフォルトボタンとなっており、 Enter キーを押すと「はい」がクリックされたのと同じ結果となります。
デフォルトボタンを別のボタンに設定する場合、省略可能な 2 番目の引数でボタンの種類とあわせてデフォルトボタンを設定します。
設定可能な種類は次の通りです。
| 定義済み定数 | 値 | 説明 |
|---|---|---|
| vbDefaultButton1 | 0 | 1 番目のボタン |
| vbDefaultButton2 | 256 | 2 番目のボタン |
| vbDefaultButton3 | 512 | 3 番目のボタン |
| vbDefaultButton4 | 768 | 4 番目のボタン |
例えば vbYesNoCancel ボタンと MsgBox の 2 番目の引数に次のように記述します。
Option Explicit
Sub MsgBox関数()
Dim res As Integer
res = MsgBox("ファイルを削除します。宜しいですか?", vbYesNoCancel + vbDefaultButton2)
End Sub
又は Or 演算子を使って次のように記述してもいいです。
Option Explicit
Sub MsgBox関数()
Dim res As Integer
res = MsgBox("ファイルを削除します。宜しいですか?", vbYesNoCancel Or vbDefaultButton2)
End Sub
どちらの方法であっても今回の場合は vbYesNoCancel の値は 3 で vbQuestion の値は 256 のため、 2 番目の引数は 259 となります。
それでは実際にプログラムを実行してみます。
2 番目のボタンがデフォルトボタンになっているのが確認できます。
-- --
Excel VBA でダイアログボックスに表示するボタンの種類を選択する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。