
VBA【MsgBox】のすべて(アイコンや分岐)【総集編】わかりやすく解説【MsgBox完全マスター】
VBAで「MsgBox」について、サンプルコードと共に解説します。
「MsgBox」関数は色々な事が出来るので、それぞれのサンプルコードも用意してあります。
ExcelVBAでメッセージボックスを表示するにはVBAを使用する必要があります。
メッセージボックスは、ダイアログボックスとも呼ばれたりしますが
VBAでは、メッセージボックスという名称が一般的です。
VBAで「MsgBox」関数を使用する事で、メッセージボックスを表示する事ができます。
この記事では、「MsgBox」に関するアイコンや分岐など、全てを紹介しています。
ですので、この記事内で知りたいことを検索すれば、色々な他の記事を見る必要がありません。
VBAのメッセージボックスにも、色々種類があるので、その種類も解説します。
VBAの「MsgBox」の引数と「MsgBox」を改行する方法など
「MsgBox」関数について、全て解説していきます。
メッセージを表示する「MsgBox」関数は、難しくはないので
「MsgBox」を完全マスターしましょう。
VBAでさくっとシンプルなメッセージボックスを表示したい方はこちらをご覧ください
◆VBA「MsgBox」とは?
ExcelVBAにおける、「MsgBox」とは、メッセージボックスを表示する事ができる関数です。
メッセージボックスにも様々種類があります。
例えば、「はい」や「いいえ」、「キャンセル」などの選択肢を表示するメッセージボックスや
注意喚起、エラー警告、などのメッセージレベルの変更したものなど、色々あります。
VBAの「MsgBox」では、上記のメッセージボックスの表示が可能です。
さらに「MsgBox」でメッセージボックスを表示して
選択肢による条件分岐する事も可能です。
「MsgBox」でボタンの表示を指定することによって、右上の閉じる(×)ボタンを無効にして
グレーアウトすることができます。
右上の閉じる(×)ボタンがグレーアウトすれば、押せなくなります。
表示はされますが、押しても反応はありません。
VBAの「MsgBox」を表示して、色々組み合わせると、さらに便利です。
◆「MsgBox」の引数
・引数一覧
VBA「MsgBox」の引数は、下記になります。
MsgBox (prompt [, buttons ] [, title ] [, helpfile, context ])
※[ ]の部分は省略可能です。
・それぞれの引数を解説
引数:prompt ※必須
「MsgBox」のpronptとは、表示したいメッセージの文字列を指定します。
VBA MsgBoxの「prompt」の指定は、必須の引数なります。
使用する文字の幅により、「prompt」は、最大で約 1024 文字使用できます。
メッセージボックスを改行する場合は、「vbCrLf」等を使用して改行し
区切ることができます。
詳しくは、こちらの記事をご覧ください。
「MsgBox」のbuttonsとは、メッセージボックスのボタンの種類、アイコンを組み合わせて指定する事ができます。
VBA MsgBoxの「buttons」の指定は、省略可能の引数になります。
メッセージボックスで「注意」や「警告」アイコンの表示を指定したり
「OK」や「キャンセル」、「再試行」などの選択ボタンを指定することができます。
省略された場合、「buttons」の既定値は 0 です。
引数:title ※省略可能
「MsgBox」のtitleとは、メッセージボックスのタイトルバーに表示される文字列を指定する事が
できます。
VBA MsgBoxの「title」の指定は、省略可能の引数になります。
「title」は、メッセージボックスのタイトルバーに表示される文字列式です。
メッセージボックスのタイトルバーというのは左上の部分でになります。
参考画像では、「メッセージボックスのタイトル」という部分が
メッセージボックスのタイトルバーになります。

「title」が省略された場合は、タイトルバーには
アプリケーションの名前が表示されます。
例えば、Excelでメッセージボックスの引数「title」を省略すると
タイトルバーには「Microsoft Excel」と表示されます
引数:helpfile ※省略可能
「MsgBox」のhelpfileとは、「.chm」拡張子のヘルプファイルを開く事ができます。
VBA MsgBoxの「helpfile」の指定は、省略可能の引数になります。
ファイルのフルパスを文字列で指定するとヘルプファイルを開けます。
※「helpfile」を指定した場合は、「引数:context」の指定が必須になります。
引数:context ※省略可能
「MsgBox」のcontextとは、「引数:helpfile」の表示したい項目を数値で指定します。
VBA MsgBoxの「context」の指定は、省略可能の引数になります。
「context」の数値は、「0」で大半のファイルは開きます。
ヘルプファイル側でトピックに割り当てられた番号が設定されている場合は
「0」以外の数値でも開く事ができます。
※「context」を指定した場合は、「引数:helpfile」の指定が必須になります。
◆メッセージボックスを表示する方法
・メッセージボックス表示サンプルコード
Sub メッセージボックスを表示する()
'●シンプルなメッセージボックスの表示
MsgBox "メッセージ"
'●ボタンやアイコンを指定してメッセージボックスの表示
MsgBox "ボタンやアイコンを指定", vbYesNoCancel + vbInformation
'●メッセージボックスで条件分岐
rc = MsgBox("条件分岐します。", vbYesNo, "メッセージボックスで条件分岐")
If rc = vbYes Then
Debug.Print "vbYes" & " を選択"
ElseIf rc = vbNo Then
Debug.Print "vbNo" & " を選択"
End If
End Sub
・MsgBoxのサンプルコード解説
シンプルなメッセージボックスを表示する
VBAで単純でシンプルなメッセージボックスを表示したい場合は
「MsgBox “メッセージ”」と記述すれば、表示する事ができます。
'●シンプルなメッセージボックスの表示
MsgBox "メッセージ"

「メッセージ」の部分を任意の文字列に変更してください。
ボタンやアイコンを指定してメッセージボックスの表示
VBAでボタンやアイコンを指定して、メッセージボックスを表示したい場合は
2個目の「引数:buttons 」に例として「vbYesNoCancel + vbInformation」と記述すれば、表示する事ができます。
'●ボタンやアイコンを指定してメッセージボックスの表示
MsgBox "ボタンやアイコンを指定", vbYesNoCancel + vbInformation

「vbYesNoCancel 」で「はい」と「いいえ」と「キャンセル」ボタンの表示を指定しています。
「vbInformation」で青色背景の「ⅰ」のアイコンの表示を指定しています。
「vbYesNoCancel 」と「vbInformation」の間に「+」を使用することで
ボタンとアイコンの表示指定を組合せしています。
メッセージボックスで条件分岐する方法
VBAの「MsgBox」で条件分岐する方法は、「変数=MsgBox ( ) 」という形にします。
そうすれば、選択したボタンが値として変数に格納されるので
その値で、条件分岐する事ができます。
'●メッセージボックスで条件分岐
rc = MsgBox("条件分岐します。", vbYesNo, "メッセージボックスで条件分岐")
If rc = vbYes Then
Debug.Print "vbYes" & " を選択"
ElseIf rc = vbNo Then
Debug.Print "vbNo" & " を選択"
End If
◆メッセージボックスのボタンやアイコンの種類一覧
VBAのメッセージボックスで使用できるボタンやアイコンを画像を添えて紹介します。
・メッセージボックスで表示できる条件分岐ボタンの種類
「MsgBox」で選択ボタンを指定してメッセージボックス表示する場合は、条件分岐すると思いますので
変数に格納する前提でのサンプルコードを記載します。
「rc =」と「()」を消しても、選択ボタンを指定してメッセージボックス表示する事はできますが
その場合、条件分岐はできません。
[OK]のみを表示する
メッセージボックスに「OK」のみ表示したい場合は
2個目の「引数:buttons 」に「vbOKOnly」と記述します。
'[OK]のみ
rc = MsgBox("vbOKOnly", vbOKOnly, "選択ボタン")
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

※右上の閉じる(×)ボタンは、無効になりません
[OK]と[キャンセル]を表示する
メッセージボックスに「OK」と[キャンセル]を表示したい場合は
2個目の「引数:buttons 」に「vbOKCancel」と記述します。
'[OK]と[キャンセル]
rc = MsgBox("vbOKCancel", vbOKCancel, "選択ボタン")
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

※右上の閉じる(×)ボタンは、無効になりません
[中止]と[再試行]と[無視]を表示する
メッセージボックスに[中止]と[再試行]と[無視]を表示したい場合は
2個目の「引数:buttons 」に「vbAbortRetryIgnore」と記述します。
'[中止]と[再試行]と[無視]
rc = MsgBox("vbAbortRetryIgnore", vbAbortRetryIgnore, "選択ボタン")
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

※右上の閉じる(×)ボタンは、無効になります
[はい]と[いいえ]と[キャンセル]を表示する
メッセージボックスに[はい]と[いいえ]と[キャンセル]を表示したい場合は
2個目の「引数:buttons 」に「vbYesNoCancel」と記述します。
'[はい]と[いいえ]と[キャンセル]
rc = MsgBox("vbYesNoCancel", vbYesNoCancel, "選択ボタン")
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

※右上の閉じる(×)ボタンは、無効になりません
[はい]と[いいえ]を表示する
メッセージボックスに[はい]と[いいえ]を表示したい場合は
2個目の「引数:buttons 」に「vbYesNo」と記述します。
'[はい]と[いいえ]
rc = MsgBox("vbYesNo", vbYesNo, "選択ボタン")
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

※右上の閉じる(×)ボタンは、無効になります
[再試行]と[キャンセル]を表示する
メッセージボックスに[再試行]と[キャンセル]を表示したい場合は
2個目の「引数:buttons 」に「vbRetryCancel」と記述します。
'[再試行]と[キャンセル]
rc = MsgBox("vbRetryCancel", vbRetryCancel, "選択ボタン")
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

※右上の閉じる(×)ボタンは、無効になりません
・メッセージボックスで表示できるアイコンの種類
「MsgBox」のメッセージボックスで指定できるアイコンの種類を紹介します。
[警告]アイコンを表示する
メッセージボックスに[警告]アイコンを表示したい場合は
2個目の「引数:buttons 」に「vbCritical」と記述します。
VBAの「MsgBox」の[警告]アイコンは、入力不備、エラー時などに使用します。
'警告
MsgBox "vbCritical", vbCritical, "アイコンの種類"
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

「vbCritical」は赤色背景の「×す。
[問い合わせ]アイコンを表示する
メッセージボックスに[問い合わせ]アイコンを表示したい場合は
2個目の「引数:buttons 」に「vbQuestion」と記述します。
VBAの「MsgBox」の[問い合わせ]アイコンは、なにか選択を促す時などに使用します。
'問い合わせ
MsgBox "vbQuestion", vbQuestion, "アイコンの種類"
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

「vbQuestion」は、青色背景の「?」のアイコンになります。
[注意]アイコンを表示する
メッセージボックスに[注意]アイコンを表示したい場合は
2個目の「引数:buttons 」に「vbExclamation」と記述します。
VBAの「MsgBox」の[注意]アイコンは、注意喚起などに使用します。
'注意
MsgBox "vbExclamation", vbExclamation, "アイコンの種類"
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

「vbExclamation」は三角形の黄色背景の「ⅰ」のアイコンになります。
[情報]アイコンを表示する
メッセージボックスに[情報]アイコンを表示したい場合は
2個目の「引数:buttons 」に「vbInformation」と記述します。
VBAの「MsgBox」の[情報]アイコンは、なにかのお知らせなどに使用します。
'情報
MsgBox "vbInformation", vbInformation, "アイコンの種類"
VBAで上記コードを実行した場合
下記の画像のようなメッセージボックスがエクセル上に表示されます。

「vbInformation」は、青色背景の「ⅰ」のアイコンになります。
◆まとめ
エクセルでメッセージボックスを表示する方法は、理解できましたでしょうか。
VBAで「MsgBox」を使えば、簡単にできますね。
これを読んでも解決できない方、なにか不明点がある場合は
コメントして頂くか、こちらからお問い合わせしてください。