【Excel VBA】MsgBoxでメッセージボックスを表示する方法

Excel VBAでMsgBoxの使い方を知りたい
メッセージボックスでタイトルやアイコンを設定させたい
メッセージボックスで[はい][いいえ]で処理を分岐させたい

Excel VBAでメッセージボックスを表示させるにはMsgBox関数を使えば簡単ですが、初心者にとっては基本的な使い方やパターン別に使い分ける方法がいまいちわからない方も多いのではないでしょうか?

とくにユーザーが選択したボタンで処理を変える方法は、使いやすさの面で重要となります。そこで、この記事ではMsgBox関数でメッセージボックスを表示する方法について、以下の内容で解説していきます。

  • MsgBox関数とは
  • メッセージボックスを表示する方法
  • ユーザーが選択したボタンで処理を変える方法

メッセージボックスを表示させる方法を基礎の基礎から応用的な方法まで網羅的に紹介していますので、ぜひ参考にしてください。

それでは、例を交えながら詳しく解説していきます。

目次

VBAのMsgBox関数とは

MsgBox関数とは、メッセージボックスを表示するための関数です。この関数の引数に指定したメッセージを、次の画像のように表示することができます。

vba_msgbox11

また、メッセージを表示する以外にも、いくつかできることがあります。詳しくは、以降で解説しています。

VBAでメッセージボックスを表示する方法

ExcelVBAでは、メッセージボックスを表示するために、次のようにMsgBox関数を使用します。

MsgBox関数の使い方

MsgBox関数でメッセージを表示するためには、次のサンプルコードのように、メッセージを指定することでメッセージボックスを表示することができます。

Sub Sample()
    MsgBox "これがメッセージボックスです。"
End Sub

[実行結果]

vba_msgbox11

実行結果からメッセージボックスが表示されることを確認できます。

タイトルの設定方法

メッセージボックスのタイトルを変更するためには、次のように引数Titleにタイトル名を指定します。

Sub Sample()
    MsgBox "これがメッセージボックスです。", Title:="ここがタイトルです。"
End Sub

[実行結果]

vba_msgbox21

実行結果からタイトルが変更されたことを確認できます。

アイコンの設定方法

VBAではアイコンを表示させるための標準アイコンが用意されています。次の表にあるような用途で使い分けます。

種類画像定数説明
エラーアイコンvba_msgbox23vbCritical16エラーメッセージで使用します。
疑問符アイコンvba_msgbox26vbQuestion32ヘルプウィンドウを開くメッセージボックスで使用します。
警告アイコンvba_msgbox24vbExclamation48警告のメッセージで使用します。
情報アイコンvba_msgbox25vbInformation64大事な情報を伝えるメッセージで使用します。

メッセージボックスに標準アイコンを表示するためには、次のように引数Buttonsを指定します。

Sub Sample()
    MsgBox "これがメッセージボックスです。", Buttons:=vbInformation
End Sub

[実行結果]

vba_msgbox12

実行結果から標準アイコンが表示されたことを確認できます。

改行コードを使用する方法

MsgBox関数で改行コードを使用するためには、vbCrLfを使用します。次のサンプルコードでは、文字列にvbCrLf(改行コード)を連結するために&(アンパサンド)を使用しています。

Sub Sample()
    MsgBox "これがメッセージボックスです。" & vbCrLf & "メッセージ内で改行することができます。"
End Sub

[実行結果]

vba_msgbox31

実行結果からメッセージが改行されていることを確認できます。この記事には登場しませんが、改行コードにはいくつか種類があります。

改行コードの種類や使い分けの解説をしている、こちらの記事がとても参考になります。改行コードについて詳しく知りたい方は、是非ご覧ください。

変数の値と文字列を連結して表示する方法

文字列と変数の値を連結するためには、次のように記述します。

"連結したい文字列" & 連結したい変数の値

ExcelVBAでは、文字列や変数の値を&(アンパサンド)で連結できます。次のサンプルコードでは、変数numの値を文字列に連結する為に「str = “変数の値は” & num & “です。”」としています。

Sub Sample()
    Dim num As Integer
    num = 1
    Dim str As String
    str = "変数の値は" & num & "です。"
    MsgBox str
End Sub

[実行結果]

vba_msgbox32

実行結果から文字列と変数の値を連結して表示していることが確認できます。

選択ボタンで処理を分岐する

メッセージボックスでは、ボタンを表示することでユーザーと対話するような形で処理を進めることができます。ここでは、メッセージボックスにボタンを表示し、ユーザーが選択したボタンで処理を変える方法を解説します。

選択ボタンで処理を変えるには?

MsgBoxの戻り値を使用することで、ユーザーが選択したボタンによって処理を変えることができます。MsgBoxの戻り値を代入する変数型は、VbMsgBoxResult列挙型を使います。

VbMsgBoxResult列挙型には、次の表の通り押されたボタンに対応した定数が代入されます。

定数説明
vbOK1[OK]ボタンが押されたことを示します。
vbCancel2[キャンセル]ボタンが押されたことを示します。
vbAbort3[中止]ボタンが押されたことを示します。
vbRetry4[再試行]ボタンが押されたことを示します。
vbIgnore5[無視]ボタンが押されたことを示します。
vbYes6[はい]ボタンが押されたことを示します。
vbNo7[いいえ]ボタンが押されたことを示します。

vbYesNoと[はい]/[いいえ]ボタンで処理を分岐する

引数Buttonsを指定して、メッセージボックスにボタンを表示することができます。引数Buttonsに指定できるボタンは、次の表の通りです。

定数説明
vbOKOnly0[OK]ボタンのみを表示します。
vbOKCancel1[OK]ボタンと[キャンセル]ボタンを表示します。
vbAbortRetryIgnore2[中止]、[再試行]、[無視]の3つのボタンを表示します。
vbYesNoCancel3[はい]、[いいえ]、[キャンセル]の3つのボタンを表示します。
vbYesNo4[はい]ボタンと[いいえ]ボタンを表示します。
vbRetryCancel5[再試行]ボタンと[キャンセル]ボタンを表示します。

引数Buttonsには、次のように上の表からボタンを示す定数か値を指定します。

MsgBox "表示するメッセージ", Buttons:=ボタンを示す定数か値

次のサンプルコードは、[はい]と[いいえ]のボタンを表示し、ユーザーが選択したボタンによって処理を変えています。

Sub Sample()
    Dim rslt As VbMsgBoxResult
    rslt = MsgBox("これは、メッセージボックスですか?", Buttons:=vbYesNo)
    If rslt = vbYes Then
        MsgBox "正解です。"
    Else
        MsgBox "不正解です。"
    End If
End Sub

[実行時]

vba_msgbox41

[実行結果(「はい」を選択した場合)]

vba_msgbox42

[実行結果(「いいえ」を選択した場合)]

vba_msgbox43

実行結果から、ユーザーが選択したボタンによって処理を変わっていることが確認できます。

まとめ

今回は、MsgBox関数を使用してメッセージボックスを表示する方法を解説しました。引数Buttonsを指定することで、標準アイコンやボタンを表示することができましたね。

また、戻り値を利用してユーザーが選択したボタンで処理を変える方法は、ソフトウェア開発では必須の技術と言えます。

もし、忘れてしまった場合はこの記事を思い出してみてください!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次