更新日:、 作成日:

VBA MsgBox 関数:メッセージボックスを表示する

はじめに

Excel VBA マクロの MsgBox 関数からメッセージボックスを表示する方法を紹介します。

MsgBox 関数は、メッセージボックスを表示しクリックしたボタンを返します。

3

処理を行うか確認したいときなどに使用します。

画面に入力した値を取得するには「InputBox 関数」をご覧ください。

MsgBox 関数の引数と戻り値

MsgBox(メッセージ)
メッセージボックスの説明をメッセージに指定します。OK ボタンが表示されます。

MsgBox(メッセージ, ボタン, タイトル)
メッセージボックスのボタンタイトルを指定できます。

引数「メッセージ」画面の説明を指定します。
引数「ボタン」省略できます。「ボタンの種類」、「アイコン」、「既定のボタン」、「モーダル」を組み合わせて指定します。
引数「タイトル」省略できます。メッセージボックスのタイトルを指定します。
戻り値の型数値型 (Integer)

引数「ボタン」

ボタンの種類

名前 ボタン
vbOKOnly0[OK]
vbOKCancel1[OK]、[キャンセル]
vbAbortRetryIgnore2[中止]、[再試行]、[無視]
vbYesNoCancel3[はい]、[いいえ]、[キャンセル]
vbYesNo4[はい]、[いいえ]
vbRetryCancel5[再試行]、[キャンセル]

アイコン

名前 アイコン
vbCritical16警告
vbQuestion32質問
vbExclamation48注意
vbInformation64情報

既定のボタン

名前 ボタン
vbDefaultButton10左から 1 番目のボタンが既定
vbDefaultButton2256左から 2 番目のボタンが既定
vbDefaultButton3512左から 3 番目のボタンが既定
vbDefaultButton4768左から 4 番目のボタンが既定

モーダル

名前 表示
vbApplicationModal0メッセージのボタンをクリックするまで、Excel の操作ができなくなります。
vbSystemModal4096メッセージのボタンをクリックするまで、Excel の操作ができなくなります。すべてのアプリの手前にメッセージが表示されます。

戻り値

名前 ボタン
vbOK1[OK]
vbCancel2[キャンセル]
vbAbort3[中止]
vbRetry4[再試行]
vbIgnore5[無視]
vbYes6[はい]
vbNo7[いいえ]

解説

クリックしたボタンの値を返します。値は VbMsgBoxResult 列挙型で定義されています。

引数「ボタン」には vbOKOnly Or vbCritical Or vbDefaultButton1 Or vbApplicationModal のように、Or 演算子を使用して、ボタンの種類とアイコンと既定のボタンとモーダルを組み合わせて指定できます。

既定のボタンがボタンの種類の数を超えるときは 1 番左のボタンが既定になります。

アプリケーションモーダル vbApplicationModal を使用します。システムモーダル vbSystemModal は操作性が悪いので使いません。

引数「ボタン」を省略すると、vbOKOnlyアイコンなし1 番左のボタンが既定vbApplicationModal で表示されます。

引数「メッセージ」が改行された文字列なら、改行して説明を表示できます。改行するには vbCrLf と結合します。

詳しくは「文字列を改行する」をご覧ください。

引数「タイトル」を省略すると、タイトルにアプリケーション名 (Microsoft Excel など) が表示されます。

使用例

MsgBox 関数の使用例を紹介します。

メッセージボックスを表示する

メッセージボックスを表示します。

Dim i As Integer
i = MsgBox("メッセージ")
Debug.Print(i) ' 1 (vbOK)
4

ボタンとタイトルをすべて指定する

ボタンとタイトルをすべて指定します。

Dim i As Integer
i = MsgBox("Tipsfound へようこそ" & vbCrLf & "このページは役に立ちましたか?", _
    vbYesNo Or vbInformation Or vbDefaultButton1 Or vbApplicationModal, "タイトル")
Debug.Print(i) ' 6: vbYes、7: vbNo
3

クリックしたボタンを判定する

クリックしたボタンを判定して分岐します。

Dim i As Integer
i = MsgBox("メッセージ", vbYesNo)
i = MsgBox("メッセージ", vbOKCancel)
i = MsgBox("メッセージ", vbAbortRetryIgnore)

Select Case i
Case vbOK
    Debug.Print ("OK")
Case vbCancel
    Debug.Print ("キャンセル")
Case vbAbort
    Debug.Print ("中止")
Case vbRetry
    Debug.Print ("再試行")
Case vbIgnore
    Debug.Print ("無視")
Case vbYes
    Debug.Print ("はい")
Case vbNo
    Debug.Print ("いいえ")
End Select