【簡単エクセル/Excel VBA マクロ】メッセージボックス|MsgBox|Excelオブジェクトの操作 #001



いつもありがとうございます。
ノンプログラマー向け「Excel VBA マクロ 解説シリーズ」へようこそ。
本稿では、「メッセージボックス(MsgBox)を操作する方法」を解説いたします。
マクロを作成する中で、ユーザーに情報を伝えたり、選択を求めたりする場面は頻繁にあります。
そんなときに欠かせないのが、MsgBox
関数です。
例えば、データの入力ミスを知らせるアラートを表示したり、操作の確認を求めるダイアログを表示したりと、その用途は多岐にわたります。
マクロを作成する上で知っておくべき必須の機能と言えます。
非常に使用する機会が多い機能ですが、実装方法はシンプルです。
本稿ではこの便利な機能の基本構文や具体例を解説いたします。
VBAにおけるExcelオブジェクト操作の全体像
VBAにおける「Excelオブジェクトの操作」の全体像は以下の記事で解説しております。
本稿では「Excelオブジェクトの操作」の一部である「メッセージボックス」を解説いたします。
VBAでメッセージボックス(MsgBox)を操作する方法
基本構文
メッセージボックスの基本構文を以下に示します。
MsgBox(prompt, [buttons], [title], [helpfile], [context])
それぞれの引数の意味は下表のようになっています。
引数名 | 説明 | 省略 可否 |
---|---|---|
prompt | メッセージボックスに表示するテキストです。 | 必須 |
buttons | メッセージボックスに表示するボタンの種類やアイコンを指定する数値です。 | 省略可 |
title | メッセージボックスのタイトルバーに表示するテキストです。 | 省略可 |
helpfile | メッセージボックスのヘルプボタンをクリックしたときに表示されるヘルプファイルのパスです。 | 省略可 |
context | ヘルプファイル内の特定のトピックを指定するためのコンテキスト番号です。これは、ユーザーがメッセージボックスのヘルプボタンをクリックしたときに表示されるヘルプトピックを決定するために使用されます。 | 省略可 |
尚、buttons には下表の定数が指定できます。
buttons の定数名 | 説明 |
---|---|
vbOKOnly | OKボタンのみを表示します。 |
vbOKCancel | OKボタンとキャンセルボタンを表示します。 |
vbAbortRetryIgnore | 中止、再試行、無視ボタンを表示します。 |
vbYesNoCancel | はい、いいえ、キャンセルボタンを表示します。 |
vbYesNo | はい、いいえボタンを表示します。 |
vbRetryCancel | 再試行、キャンセルボタンを表示します。 |
vbCritical | 警告や重要な情報を示す感嘆メッセージアイコン(通常は黄色の三角形に感嘆符)を表示します。 |
vbQuestion | 警告や重要な情報を示す感嘆メッセージアイコン(通常は黄色の三角形に感嘆符)を表示します。 |
vbExclamation | 警告や重要な情報を示す感嘆メッセージアイコン(通常は黄色の三角形に感嘆符)を表示します。 |
vbInformation | 一般的な情報や通知を示す情報メッセージアイコン(通常は青い円に「i」)を表示します。 |
vbDefaultButton1 | 最初のボタンをデフォルトボタンに設定します。例えば、OKボタンとキャンセルボタンがある場合、OKボタンがデフォルトボタンになります |
vbDefaultButton2 | 2番目のボタンをデフォルトボタンに設定します。例えば、OKボタンとキャンセルボタンがある場合、キャンセルボタンがデフォルトボタンになります。 |
vbDefaultButton3 | 3番目のボタンをデフォルトボタンに設定します。例えば、はい、いいえ、キャンセルボタンがある場合、キャンセルボタンがデフォルトボタンになります。 |
vbDefaultButton4 | 4番目のボタンをデフォルトボタンに設定します。例えば、複数のカスタムボタンがある場合、4番目のボタンがデフォルトボタンになります。 |
vbApplicationModal | アプリケーションモーダルメッセージボックスを表示します。 |
vbSystemModal | システムモーダルメッセージボックスを表示します。これは、メッセージボックスが表示されている間、他のすべてのアプリケーションが一時停止されることを意味します。 |
vbMsgBoxHelpButton | ヘルプボタンを表示します。 |
vbMsgBoxSetForeground | メッセージボックスを前面に表示します。 |
vbMsgBoxRight | テキストを右揃えにします。 |
vbMsgBoxRtlReading | テキストを右から左に読みます。 |
具体例と解説
MsgBox関数の具体例とマクロ実行結果を以下に示します。
Sub Sample()
' 例1: シンプルなメッセージボックス
MsgBox "これはシンプルなメッセージボックスです。"
' 例2: タイトル付きのメッセージボックス
MsgBox "これはタイトル付きのメッセージボックスです。", , "タイトル"
' 例3: ボタンとアイコンを指定したメッセージボックス
MsgBox "保存しますか?", vbYesNo + vbQuestion, "確認"
' 例4: デフォルトボタンを指定したメッセージボックス
MsgBox "操作を続行しますか?", vbOKCancel + vbDefaultButton2, "確認"
End Sub




ボタンの定数は、例3や4のように、各定数を"+"でつなぎ、複数の値を設定することができます。
ユーザーから応答を受け取って処理を続ける場合には、以下のようにコードを記述します。
Sub Sample2()
' 変数宣言
Dim response As VbMsgBoxResult ' ユーザーの応答を格納する変数
' メッセージボックスを表示し、ユーザーの応答を取得
response = MsgBox("操作を続行しますか?", vbOKCancel + vbDefaultButton2, "確認")
' ユーザーがOKをクリックしたかどうかを確認
If response = vbOK Then
' ユーザーがOKをクリックした場合の処理
MsgBox "操作を続行します。"
Else
' ユーザーがキャンセルをクリックした場合の処理
MsgBox "操作を中止しました。"
End If
End Sub



解説します。
' 変数宣言
Dim response As VbMsgBoxResult ' ユーザーの応答を格納する変数
冒頭のこの部分は変数の宣言です。これにより変数 response は As 以降で指定したデータ型のデータを格納できるようになります。
' メッセージボックスを表示し、ユーザーの応答を取得
response = MsgBox("操作を続行しますか?", vbOKCancel + vbDefaultButton2, "確認")
変数 response にユーザーからの応答を格納します。
' ユーザーがOKをクリックしたかどうかを確認
If response = vbOK Then
' ユーザーがOKをクリックした場合の処理
MsgBox "操作を続行します。"
Else
' ユーザーがキャンセルをクリックした場合の処理
MsgBox "操作を中止しました。"
End If
If ステートメントで条件を分岐しています。ユーザーの応答内容によって実行する処理が変わります。
おわりに

ご覧いただきありがとうございました。
本稿では、「Excelオブジェクトの操作」の中の「メッセージボックスを操作する方法」を解説いたしました。
お問い合わせやご要望等ございましたら、「お問い合わせ/ご要望」またはコメントにて、ご連絡いただければ幸いでございます。
皆様の人生がより一層素晴らしいものになるよう、少しでもお役に立てれば幸いでございます。
なお、当サイトでは様々な情報を発信しております。もしよろしければ、トップページもご覧いただけると幸いでございます。
関連記事
本稿と関連の深い記事です。もしよろしければ、合わせてご活用ください。
- 【簡単エクセル/Excel VBA マクロ】Excel VBA マクロの全体像 | みんなの実用学 (jitsuyogaku.com)
- 【簡単エクセル/Excel VBA マクロ】通常使用編目次 | みんなの実用学 (jitsuyogaku.com)
- 【簡単エクセル/Excel VBA マクロ】ワンポイントテクニック編目次 | みんなの実用学 (jitsuyogaku.com)
- 【簡単エクセル/Excel VBA マクロ】アプリ事例編目次 | みんなの実用学 (jitsuyogaku.com)
VBAプログラミングスキルアップのための参考情報
ここでは参考図書を紹介いたしますが、これらに限らず自分に合うものを選ぶことが重要だと考えております。皆様の、より一層のご成功を心よりお祈りしております。
VBAプログラミングのスキルアップ
学習用としてもハンドブックとしても役立つ便利な書籍がこちらです。価格はやや高めですが、その内容は非常に充実しています。相応のスキルを身に付けるためには、こうしたしっかりとした書籍を一冊持っておくと良いでしょう。
入門書に関しては、どの書籍も大きな違いはありません。あまり迷うことに時間をかけるよりは、手頃なものを一冊選んでみると良いでしょう。VBAの入門書は数多く出版されていますので、興味がある方はぜひチェックしてみてください。
甲乙つけがたい場合、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。
\チェックしてみよう/
\チェックしてみよう/
\チェックしてみよう/
VBAのプログラミング能力を客観的に証明したい場合には「VBAエキスパート試験」があります。この試験はVBAの知識を公式に認定するものです。VBAの総合的な能力獲得を目指す方に適しています。以下の公式テキストが販売されております。
プログラミングの一般教養
「独学プログラマー」というプログラミングの魅力を解説した書籍があります。これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。
こちらの記事でも紹介しております。もしよろしければご覧ください。
