Excel VBA MsgBoxの使い方と改行やYes/Noの設定方法

ExcelVBA-基礎編

今回はMsgBoxの使い方についてご説明します。

MsgBoxは画面(ダイアログボックス)にメッセージを表示させる機能です。

また、Yes/Noなどユーザーに処理を選択してもらうなどの使用方法があります。

基本的な方法から、応用的な使い方までご説明します。

1.MsgBoxの使い方

MsgBoxはダイアログボックスにメッセージとボタンを表示して、押されたボタンの結果を数値で返します。

MsgBoxの構文は次のように記述します。

MsgBox Prompt[,Buttons][,Title]

最もシンプルに記述すると次のようになります。

Sub Sample1()

MsgBox "こんにちは"

End Sub

MsgBoxの引数一覧

MsgBoxの引数一覧です。

次にButtonsの定数一覧を記載していますが、表示の種類、アイコンの種類、ボタンの種類と複数あります。

これらを複数選択する場合は次のように記述します。

MsgBox "こんにちは", vbOKOnly + vbCritical
引数省略説明
Prompt必須ダイアログボックスに表示するメッセージを指定します。
Buttons省略可能ダイアログボックスに表示する、ボタンの種類やタイプなどを指定します。
Title省略可能ダイアログボックスのタイトルバーに表示する文字列を指定します。
省略すると「Microsoft Excel」と表示されます。
Buttonsの表示するボタンに関する定数一覧
定数説明
vbOKOnly0[OK]ボタンのみを表示します。
vbOKCancel1[OK]ボタンと[キャンセル]ボタンを表示します。
vbAbortRetryIgnore2[中止]、[再試行]、および[無視]の3つのボタンを表示します。
vbYesNoCancel3[はい]、[いいえ]、および[キャンセル]の3つのボタンを表示します。
vbYesNo4[はい]ボタンと[いいえ]ボタンを表示します。
vbRetryCancel5[再試行]ボタンと[キャンセル]ボタンを表示します。
Buttonsのアイコンに関する定数一覧
定数説明
vbCritical16警告メッセージアイコンを表示します。
vbQuestion32問い合わせメッセージアイコンを表示します。
vbExclamation48注意メッセージアイコンを表示します。
vbInformation64情報メッセージアイコンを表示します。
Buttonsの標準ボタンに関する定数一覧
定数説明
vbDefaultButton10第1ボタンを標準ボタンにします。
vbDefaultButton2256第2ボタンを標準ボタンにします。
vbDefaultButton3512第3ボタンを標準ボタンにします。
vbDefaultButton4768第4ボタンを標準ボタンにします。
押されたボタンの戻り値一覧
定数説明
vbOK1[OK]ボタンが押された
vbCancel2[キャンセル]ボタンが押された
vbAbort3[中止]ボタンが押された
vbRetry4[再試行]ボタンが押された
vbIgnore5[無視]ボタンが押された
vbYes6[はい]ボタンが押された
vbNo7[いいえ]ボタンが押された

2.サンプルコード

MsgBoxのサンプルコードです。

最もシンプルなコード

下記コードは「OK」ボタンのみ表示して返り値を使いません。

Sub Sample1()

MsgBox "こんにちは"

End Sub

アイコンを変えるコード

次のコードはアイコンを変えるコードです。

Sub Sample2()

MsgBox "こんにちは", vbInformation

End Sub

メッセージを改行する

「& vbCrLf &」を使用して改行します。

「& vbNewLine &」でも改行する事が可能です。

改行の詳細については「メッセージや文字列を改行する方法」をご覧下さい。

Sub Sample3()

MsgBox "おはよう" & vbCrLf & "こんにちは" & vbCrLf & "こんばんは"

End Sub

Yes/Noのコード

ボタンの種類を「はい/いいえ」にします。

選択したボタンによって処理を分岐します。

「Result」でMsgBoxで選択されたボタンの返り値を受け取り、「If Result = vbYes Then」でYes/Noを分岐しています。

Sub Sample4()

Dim Result  As Long
Dim MyStr   As String

MyStr = "処理を続けますか?"

    Result = MsgBox(MyStr, vbYesNo + vbExclamation)
    
    If Result = vbYes Then
        
        'Yesを選択され場合の処理
        MsgBox "処理を継続します。"
        
    Else
        
        'Noを選択された場合の処理
        Exit Sub
        
    End If

End Sub
タイトルとURLをコピーしました