MsgBox関数

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グループ

第1グループ・・・ボタンの種類と個数
定数 説明
vbOKOnly 0 [OK] ボタンのみを表示します。(既定値) [OK]ボタン
vbOKCancel 1 [OK] ボタンと [キャンセル] ボタンを表示します。 [OK][キャンセル]ボタン
vbAbortRetryIgnore 2 [中止]、[再試行]、および [無視] の 3 つのボタンを表示します。
[中止][再試行][無視]ボタン
vbYesNoCancel 3 [はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示します。
[はい][いいえ][キャンセル]ボタン
vbYesNo 4 [はい] ボタンと [いいえ] ボタンを表示します。 [はい][いいえ]ボタン
vbRetryCancel 5 [再試行] ボタンと [キャンセル] ボタンを表示します。 [再試行][キャンセル]ボタン

第2グループ

第2グループ ・・・ アイコンの種類
定数 説明
vbCritical 16 警告メッセージ アイコンを表示します。 警告メッセージ アイコン
vbQuestion 32 問い合わせメッセージ アイコンを表示します。 問い合わせメッセージ アイコン
vbExclamation 48 注意メッセージ アイコンを表示します。 注意メッセージ アイコン
vbInformation 64 情報メッセージ アイコンを表示します。 情報メッセージ アイコン

第3グループ

第3グループ ・・・ 標準ボタン
定数 説明
vbDefaultButton1 0 第 1 ボタンを標準ボタンにします。(既定値)
vbDefaultButton2 256 第 2 ボタンを標準ボタンにします。
vbDefaultButton3 512 第 3 ボタンを標準ボタンにします。
vbDefaultButton4 768 第 4 ボタンを標準ボタンにします。

第4グループ

第4グループ ・・・ メッセージボックスがモーダルかどうか
定数 説明
vbApplicationModal 0 アプリケーション モーダルに設定します。 メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません。 (既定値)
vbSystemModal 4096 システム モーダルに設定します。 メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。

第5グループ

第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

 Endステートメント

上記サンプルマクロを実行すると、以下の確認ダイアログが表示されます。2番目のボタンである キャンセル ボタンにフォーカスがあたっているため、間違って Enter キーなどを押してしまっても、キャンセルされるようになっています。

sample_ef013_01実行時
sample_ef013_01実行時

キャンセル または 右上の x ボタンを押下すると処理がキャンセルされます。

[キャンセル]または[×]ボタン押下時
[キャンセル]または[×]ボタン押下時

OK ボタンを押下すると処理が進みます。

[OK]ボタン押下時
[OK]ボタン押下時
タイトルとURLをコピーしました