MsgBox(メッセージボックス)

今回の目標

  • メッセージボックスを表示させ、アイコンやタイトルを変更する。
  • メッセージボックスの戻り値によって処理を分岐させる。
  • 説明

    メッセージを表示する

    メッセージボックス関数の使い方についてです。
    Microsoft公式は基本構文は下記のとおりに使用します。

    MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])
    

    prompt ・・・ポップアップのメインに表示する文字。省略不可。
    buttons・・・ポップアップに表示するボタン。引数の省略可。省略時は「OK」ボタンのみ表示される。
    title  ・・・ポップアップのタイトルに表示する文字。
           引数の省略可能。省略時は[Microsoft Excel]と表示される。
    helpfile ・・・基本的に使用しないので無視して良い(後述参照)。
            通常のメッセージ表示では指定せず、エラー発生時等のヘルプファイルを開く時のみ指定。
            第二引数[buttons]に"vbMsgBoxHelpButton"を指定する必要がある。
            例外処理を熟知している必要があり、本引数には Err.HelpFile を指定する※。
    context ・・・基本的に使用しないので無視して良い(後述参照)。
            通常のメッセージ表示では指定せず、エラー発生時等のヘルプファイルを開く時のみ指定。
            第四引数[helpfile]と同様に、第二引数[buttons]に"helpfile"を指定する必要がある。
            例外処理を熟知している必要があり、本引数には Err.HelpContext を指定する※。
           ※helpfile と contextの使用例は、このページでは扱いません。
            例外処理の【メッセージボックスにエラーのヘルプを用意する】を参照ください。


    エクセルを起動して、新規ブックを開いてください。
    次に下の黄色枠内のプログラムをVBEへコピー&ペーストします。
    VBEを開くには、エクセルをアクティブにして"Alt"+"F11"の同時に押します。
    マクロを実行する際はF5ボタンを押します。

    Sub Sample_MsgBox1()
        MsgBox "マクロが実行されました。"
    End Sub
    

    上記サンプルを実行すると、下図が表示されます。
    メッセージボックスのサンプルプログラム1の実行結果

    メッセージボックスにアイコンを表示させる

    メッセージボックスの使い方についてです。基本構文は下記のとおりに使用します。

    Sub Sample_MsgBox2()
        MsgBox "マクロが実行されました", vbInformation
    End Sub
    

    下記の図が表示されます。
    メッセージボックスのサンプルプログラム1の実行結果
    vbInformationで「ⅰ」のアイコンが表示されます。
    第二引数で、どのアイコンを表示するかを指定できます。
    他のアイコンについては下表を参照してください。

    定数アイコン使用用途
    vbInformation情報メッセージのアイコン[ 情報メッセージ ] アイコンを表示します。
    vbQuestion問い合わせメッセージのアイコン[ 問い合わせメッセージ ] アイコンを表示します。
    vbCritical重大なメッセージのアイコン[ 重大なメッセージ ] アイコンを表示します。
    vbExclamation警告メッセージのアイコン[ 警告メッセージ ] アイコンを表示します。

    「OK」以外のボタンを表示する

    今回は「OK」ボタン以外のボタンを表示してみましょう。
    表示する文字の後ろに「 , 」をつけ、『vbYesNo』と指定してみましょう。
    下記のサンプルをコピペして実行しましょう。

    Sub Sample_MsgBox3()
        MsgBox "今日は晴れですか?", vbYesNo
    End Sub
    

    実行すると下の図が表示されます。
    メッセージボックスのサンプルプログラム1の実行結果
    「vbYesNo」と指定したため、「OK」ボタンから「Yes」と「No」のボタンに変更されました。
    「vbOKCancel」と指定すると「OK」と「キャンセル」の2つのボタンになります。
    なお、ボタンの種類を指定しないと「vbOKOnly」と指定したと判断されるため、「OK」ボタンのみの表示となります。

    ボタン一覧表を記載します。

    定数説明
    vbOKOnly0[ OK ] ボタンのみを表示します。
    (デフォルトの設定)
    vbYesNo0[ はい ] 、 [ いいえ ] ボタンを表示します。
    vbOKCancel1[ OK ] 、 [ キャンセル ] ボタンを表示します。
    vbAbortRetryIgnore2[はい] 、 [いいえ] 、 [キャンセル] ボタンを表示します。

    アイコンを表示させ、「OK」以外のボタンを表示する

    アイコンと指定のボタンを表示する方法です。
    第二引数に『アイコンの種類 + ボタンの種類』と指定します。

    Sub Sample_MsgBox4()
        MsgBox "今日は晴れですか?", vbYesNo + vbQuestion
    End Sub
    
    実行すると下の図が表示されます。
    メッセージボックスのサンプルプログラム1の実行結果

    タイトルを変更する

    メッセージボックスの左上に表示されているタイトルを変更します。
    早速、サンプルプログラムをコピペして実行をしましょう。

    Sub Sample_MsgBox5()
        MsgBox "今日は晴れですか?", vbYesNo + vbQuestion, "お天気は・・・?"
    End Sub
    

    実行すると下の図が表示されます。
    メッセージボックスのサンプルプログラム1の実行結果

    メッセージボックスの戻り値一覧(クリックしたボタンでの分岐処理)

    メッセージボックスで戻り値を取得することによって、どのボタンをクリックしたか判断できます。
    戻り値を取得するため、MsgBoxの後ろに()で囲む必要があります。

    Sub Sample_MsgBox6()
        Dim ans As Long
        ans = MsgBox("お寿司は好きですか?", vbYesNoCancel)
        ' 「はい」を選択したとき
        If ans = vbYes Then
            MsgBox "今度、一緒に行きましょう!"
        ' 「いいえ」を選択したとき
        ElseIf ans = vbNo Then
            MsgBox "では、焼肉に行きましょう!"
        Else
            MsgBox "キャンセルボタンがクリックされました。"
        End If
    End Sub
    

    戻り値の一覧表です。

    定数説明
    vbOK1OKボタン
    vbCancel2Cancel
    vbAbort3中止
    vbRetry4再試行
    vbIgnore5無視
    vbYes6はい
    vbNo7いいえ

    メッセージボックスのボタンの規定値を変更する

    メッセージボックスで複数のボタンを設置したとき、通常だと一番左のボタンが選択されています。
    第二引数に特定の定数を加算することで変更することができます。

    Sub Sample_MsgBox7()
        MsgBox "スライムを仲間にしますか?", vbYesNoCancel + vbDefaultButton2
    End Sub
    

    規定値を変更するとキーボード操作しているユーザーはEnterを押すだけで済むようになるので、
    少し楽になったり、誤操作が減ったりします。
    メッセージボックスのサンプルプログラム7の実行結果

    一覧表です。

    定数説明
    vbDefaultButton101番目のボタンを既定にします。
    (デフォルトの設定)
    vbDefaultButton22562番目のボタンを既定にします。
    vbDefaultButton35123番目のボタンを既定にします。
    vbDefaultButton47684番目のボタンを既定にします。

    確認テスト

    次の問いに答えなさい。

    1. メッセージボックスに文字列"処理が完了しました。"と表示させなさい。
    2. メッセージボックスに文字列"処理に失敗しました。"と表示させ、「×」のアイコンを表示させなさい。
    3. メッセージボックスに文字列"処理を続行しますか?"と表示させ、「?」のアイコンと「OK」および「キャンセル」のボタン表示させなさい。
    4. メッセージボックスに文字列"処理が完了しました。"と表示させ、タイトルに「マクロVer1.0」と表示させなさい。このとき、アイコンは表示せず、ボタンは「OK」ボタンのみ表示させること。
    解答1 解答2 解答3 解答4

    関連リンク

    ページの先頭へ