MsgBox 関数はマクロ実行中にダイアログボックスを画面に表示し、ユーザーからのボタン操作を受け付けます。ダイアログボックス上の何かしらボタンを押下すると、押されたボタンに対応する定数を返却します。
MsgBox関数の使用方法
構文
MsgBox(Prompt [, Buttons] [, Title] [, HelpFile] [, Context]) 【戻り値】 MsgBoxからの戻り値を参照
| 引数名 | 省略 | 説明 |
|---|---|---|
| Prompt | × | ダイアログ ボックス内にメッセージとして表示する文字列を示す文字列式を指定します。 改行するにはvbCr、vbLf、vbCrLfのいずれかを使用します。 |
| Buttons | ○ | 表示されるボタンの種類と個数、使用するアイコンのスタイル、標準ボタン、メッセージ ボックスがモーダルかどうかなどを表す値の合計値を示す数式を指定します。 省略すると、名前付き引数 buttons の既定値 0 になります。 |
| Title | ○ | ダイアログ ボックスのタイトル バーに表示する文字列式を指定します。 省略すると、タイトル バーにはアプリケーション名が表示されます。 |
| Helpfile | ○ | ダイアログ ボックスに状況依存のヘルプを設定するために、使用するヘルプ ファイルの名前を示す文字列式を指定します。 この引数は、表示するダイアログ ボックスの説明を、ヘルプを使って表示するときに指定します。 名前付き引数 helpfile を指定した場合は、名前付き引数 context も指定する必要があります。 |
| Context | ○ | ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。 名前付き引数 context を指定した場合は、名前付き引数 helpfile も指定する必要があります。 |
引数Buttonsに指定可能な定数
引数Buttonsに指定可能な定数は5つのグループからなり、第1~4グループについてはグループ内から1つずつ、第5グループについては必要に応じた定数を合算して指定することが可能です。
- 第1グループ ・・・ ボタンの種類と個数(グループ内で1つ指定可能)
- 第2グループ ・・・ アイコンの種類(グループ内で1つ指定可能)
- 第3グループ ・・・ 標準ボタン(グループ内で1つ指定可能)
- 第4グループ ・・・ メッセージボックスがモーダルか(グループ内で1つ指定可能)
- 第5グループ ・・・ その他(すべて指定可能)
第1グループ
| 定数 | 値 | 説明 |
|---|---|---|
| vbOKOnly | 0 | [OK] ボタンのみを表示します。(既定値)
|
| vbOKCancel | 1 | [OK] ボタンと [キャンセル] ボタンを表示します。
|
| vbAbortRetryIgnore | 2 | [中止]、[再試行]、および [無視] の 3 つのボタンを表示します。
|
| vbYesNoCancel | 3 | [はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示します。
|
| vbYesNo | 4 | [はい] ボタンと [いいえ] ボタンを表示します。
|
| vbRetryCancel | 5 | [再試行] ボタンと [キャンセル] ボタンを表示します。
|
第2グループ
| 定数 | 値 | 説明 |
|---|---|---|
| vbCritical | 16 | 警告メッセージ アイコンを表示します。
|
| vbQuestion | 32 | 問い合わせメッセージ アイコンを表示します。
|
| vbExclamation | 48 | 注意メッセージ アイコンを表示します。
|
| vbInformation | 64 | 情報メッセージ アイコンを表示します。
|
第3グループ
| 定数 | 値 | 説明 |
|---|---|---|
| vbDefaultButton1 | 0 | 第 1 ボタンを標準ボタンにします。(既定値) |
| vbDefaultButton2 | 256 | 第 2 ボタンを標準ボタンにします。 |
| vbDefaultButton3 | 512 | 第 3 ボタンを標準ボタンにします。 |
| vbDefaultButton4 | 768 | 第 4 ボタンを標準ボタンにします。 |
第4グループ
| 定数 | 値 | 説明 |
|---|---|---|
| vbApplicationModal | 0 | アプリケーション モーダルに設定します。 メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません。 (既定値) |
| vbSystemModal | 4096 | システム モーダルに設定します。 メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。 |
第5グループ
| 定数 | 値 | 説明 |
|---|---|---|
| vbMsgBoxHelpButton | 16384 | ヘルプ ボタンを追加します。 |
| VbMsgBoxSetForeground | 65536 | 最前面のウィンドウとして表示します。 |
| vbMsgBoxRight | 524288 | テキストを右寄せで表示します。 |
| vbMsgBoxRtlReading | 1048576 | テキストを、右から左の方向で表示します。 |
MsgBoxからの戻り値
MsgBoxからは以下の表のとおりボタンに対応した数値が返ってきます。
| 定数 | 値 | 説明 |
|---|---|---|
| vbOK | 1 | [OK] ボタン押下 |
| vbCancel | 2 | [キャンセル] ボタン押下または、 ダイアログボックス右上の [×] ボタン押下 |
| vbAbort | 3 | [中止] ボタン押下 |
| vbRetry | 4 | [再試行] ボタン押下 |
| vbIgnore | 5 | [無視] ボタン押下 |
| vbYes | 6 | [はい] ボタン押下 |
| vbNo | 7 | [いいえ] ボタン押下 |
MsgBox関数の使用例
マクロの実行に処理時間のかかることが分かっている場合にその注意メッセージを表示する例です。ボタンは OK ボタンと キャンセル ボタンを表示して キャンセル ボタンを標準ボタンに設定し、さらに、注意メッセージアイコンを表示するように設定します。
Sub sample_ef013_01()
Dim intRtn As Integer
'[OK][キャンセル]ボタンを表示し、[キャンセル]を標準ボタンにする。
intRtn = MsgBox("この処理には時間がかかります。" & vbLf & _
"実行してもよろしいですか?", _
vbOKCancel + vbExclamation + vbDefaultButton2, _
"処理実行確認")
'[OK]ボタン以外が押下されたら処理を終了する。
If intRtn <> vbOK Then
MsgBox "処理をキャンセルしました。"
End '処理を終了
End If
'-----------------------------
'ここに時間のかかる処理を記述
'-----------------------------
MsgBox "正常に処理が終了しました。", vbInformation
End Sub
上記サンプルマクロを実行すると、以下の確認ダイアログが表示されます。2番目のボタンである キャンセル ボタンにフォーカスがあたっているため、間違って Enter キーなどを押してしまっても、キャンセルされるようになっています。

キャンセル または 右上の x ボタンを押下すると処理がキャンセルされます。
![[キャンセル]または[×]ボタン押下時](https://www.239-programing.com/wp-content/uploads/func/img_f013_12.png)
OK ボタンを押下すると処理が進みます。
![[OK]ボタン押下時](https://www.239-programing.com/wp-content/uploads/func/img_f013_13.png)