【ExcelVBA】メッセージボックスの使い方 MsgBox

こんなあなたにおすすめ

・Excel VBAでメッセージボックスの使い方を知りたい

今回は、Excel VBAでよく使うメッセージボックスの使い方についてご紹介します。

ユーザーにメッセージを伝えるためにも重要になってくるため、この機会に使えるようになりましょう。

メッセージを表示するだけでなく、ユーザーの選択したコマンドによって、処理を実行したりもできるため、そちらについても解説します。

Excel VBAでメッセージボックスの使い方を知りたい

メッセージボックスの種類一覧

MsgBoxの種類は次の通りです。

定数 内容
vbOKOnly 0 [OK]ボタンのみを表示する
vbOKCancel 1 [OK]ボタンと[キャンセル]ボタンを表示する
vbAbortRetryIgnore 2 [中止]、[再試行]、および[無視]の3つのボタンを表示する
vbYesNoCancel 3 [はい]、[いいえ]、および[キャンセル]の3つのボタンを表示する
vbYesNo 4 [はい]ボタンと[いいえ]ボタンを表示する
vbRetryCancel 5 [再試行]ボタンと[キャンセル]ボタンを表示する
vbCritical 16 警告メッセージアイコンを表示する
vbQuestion 32 問い合わせメッセージアイコンを表示する
vbExclamation 48 注意メッセージアイコンを表示する
vbInformation 64 情報メッセージアイコンを表示する

ボタンが押された時の戻り値

MsgBoxの戻り値は次の通りです。

定数 内容
vbOK 1 [OK]ボタンが押された
vbCancel 2 [キャンセル]ボタンが押された
vbAbort 3 [中止]ボタンが押された
vbRetry 4 [再試行]ボタンが押された
vbIgnore 5 [無視]ボタンが押された
vbYes 6 [はい]ボタンが押された
vbNo 7 [いいえ]が押された

メッセージボックスのSampleコード

シンプルなメッセージ

最もシンプルでよく使うメッセージボックスです。

Sub test1()

    MsgBox ("こんにちは!")

End Sub

メッセージ内で改行

メッセージ内で改行したい場合は、vbCrLfを使いましょう。
ユーザー目線になったときに、見やすさはとても重要ですので、改行をうまく使って見やすくしましょう。

Sub test2()

    MsgBox ("こんにちは!" & vbCrLf & "山田 太郎です。")

End Sub

vbOKCancel + vbCritical

Sub test3()

    MsgBox "危険な状態ですが、処理を続行しますか?", _
            vbOKCancel + vbCritical

End Sub

vbAbortRetryIgnore + vbCritical

Sub test4()

    MsgBox "危険な状態ですが、処理を続行しますか?", _
            vbAbortRetryIgnore + vbCritical

End Sub

vbYesNoCancel + vbQuestion

Sub test5()

    MsgBox "この記事を評価しますか?", vbYesNoCancel + vbQuestion

End Sub

vbYesNo + vbQuestion

Sub test6()

    MsgBox "この記事を評価しますか?", vbYesNo + vbQuestion

End Sub

vbExclamation

Sub test7()

    MsgBox "バッテリー残量が10%を下回りました。", vbExclamation

End Sub

vbRetryCancel + vbInformation

Sub test8()

    MsgBox "接続に失敗しました。", vbRetryCancel + vbInformation

End Sub

vbRetryCancel + vbInformation (値ver.)

Sub test9()

    MsgBox "接続に失敗しました。", 5 + 64

End Sub

vbRetryCancel + vbInformation (値ver.) メッセージボックスのタイトル設定

Sub test10()

    MsgBox "接続に失敗しました。", 5 + 64, "接続確認"

End Sub

「x」が押された時の処理

メッセージボックスで「x」が押されたときは、If文でvbCancelを指定してあげることで、キャンセル時の処理を設定することができます。

Sub test11()

    Dim reply As Long
    
    reply = MsgBox("接続に失敗しました。", _
                vbRetryCancel + vbInformation)
    
    If reply = vbCancel Then
        MsgBox "キャンセルされました。"
    End If

End Sub

【メッセージボックス】

【「x」が押されたときの実行結果】

ボタンが押されたときの処理

ユーザーがボタンを選択したときに、選択したボタンによって異なる処理をすることができます。

Sub test12()

    Dim reply As Long
    
    reply = MsgBox("この記事を評価しますか?", _
                vbYesNo + vbQuestion, "評価アンケート")
    
    If reply = vbYes Then
        MsgBox "この記事は評価されました。", , "評価結果"
    Else
        MsgBox "この記事は評価されませんでした。", , "評価結果"
    End If

End Sub

【メッセージボックス】

【「Yes」が押された時の実行結果】

【「No」が押された時の実行結果】

標準(初期選択)ボタンを指定

メッセージボックスが表示されたとき、Enterを押すと標準ボタンが押されたことになります。
初期値は、
  ボタンが1つの場合・・・そのボタン
  複数個の場合・・・一番左のボタン
となっています。

「Yes」、「No」の選択肢でユーザーが間違ってEnterを押したときに「Yes」になると困る場合などに、「No」を標準ボタンにしてあげるとそのリスクを回避することができます。

Sub test13()

    Dim reply As Long
    
    reply = MsgBox("この記事を評価しますか?", _
                vbYesNo + vbDefaultButton2, "評価アンケート")
    
    If reply = vbYes Then
        MsgBox "この記事は評価されました。", , "評価結果"
    Else
        MsgBox "この記事は評価されませんでした。", , "評価結果"
    End If

End Sub
定数 内容
vbDefaultButton1 0 第1ボタンを標準ボタンにする
vbDefaultButton2 256 第2ボタンを標準ボタンにする
vbDefaultButton3 512 第3ボタンを標準ボタンにする
vbDefaultButton4 768 第4ボタンを標準ボタンにする

まとめ

ここまで、メッセージボックスの表示方法について解説しました。

Excel VBAで必ずと言っていいほどメッセージボックスは使うので、この機会にいろんな方法を習得しましょう。

If文については、下記の記事で解説していますので、ご参照ください。
>>【ExcelVBA】If文 条件分岐 超便利 & 簡単

Excelで作業効率をアップしたい方は、下記の記事もご参照ください。
>>Excelのショートカット一覧 覚えて作業効率アップ!!
>>Excelで覚えておくべき関数 作業効率アップ間違いなし

【Excelについて学びたい方】
Excel 最強の教科書[完全版]
【Excel VBAについて学びたい方】
Excel VBA 脱初心者のための集中講座
エンジニアを目指すなら、TechAcademy!
オンラインスクール受講者数No.1!

・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!

・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!

・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!

・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!

無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら

2 COMMENTS

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です