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


いつもありがとうございます!
皆さん、こんにちは。ご覧いただきありがとうございます。
“日々の業務にちょうどいい自動化を”──
業務改善アプリケーションの作成を行っている「ソフトデザイン工房」 です。
マクロを作成する中で、ユーザーに情報を伝えたり、選択を求めたりする場面は頻繁にあります。
そんなときに欠かせないのが、MsgBox 関数です。
例えば、データの入力ミスを知らせるアラートを表示したり、操作の確認を求めるダイアログを表示したりと、その用途は多岐にわたります。
マクロを作成する上で知っておくべき必須の機能と言えます。
非常に使用する機会が多い機能ですが、実装方法はシンプルです。
この記事では、この便利な機能の基本構文や具体例を解説いたします。
この記事が、あなたのVBAマクロの価値をさらに高める一助となれば幸いです。
VBAを活用して、自分自身や身近なコミュニティに合ったアプリケーションを作成し、仕事量は半分に、成果は2倍に──そんな未来を目指すあなたを応援しています。
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 IfIf ステートメントで条件を分岐しています。ユーザーの応答内容によって実行する処理が変わります。

ご覧いただきありがとうございました!
VBAスキルアップの参考情報
近年は、ChatGPTをはじめとするAIの登場によって、学習のスタイルが大きく変わりました。
分からないことがあれば、AIに尋ねれば答えがすぐに見つかる時代です。
とはいえ、AIを使いこなすには、自分自身の基本的な知識や理解力が欠かせません。
全体像をつかむためには、やはり書籍などで体系的に学んでおくことが今でも有効です。
そのうえでAIを活用すれば、自分の理解度に合わせた的確な解説や、応用のヒントを得ることができます。
「学んで基礎を築く → AIで補い発展させる」──このサイクルを重ねることで、VBAスキルは着実に高まっていくでしょう。
VBAのスキルアップ
VBAを学び始めるなら
入門書は、どれを選んでも大きな差はないように感じます。
どれを選ぶかに悩むことに時間をかけるよりも、まずは手頃な一冊を手に取って進めてみるのがおすすめです。
もし迷ったときには、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。
基礎を超えて力をつけたいなら
私は上級者を目指していましたので、入門書にとどまらず、このような内容の濃い一冊を選んで学んでいました。
今は誰でもAIを活用できる時代になりましたが、上級者を目指す方にとっては、AIをより上手に活用するという意味でも、こうした本は今なお価値があります。
このレベルの本を一冊持っておくことに、損はないでしょう。
資格で能力を証明したいなら
VBAのプログラミング能力を客観的に示したい場合には「VBAエキスパート試験」があります。
特に「スタンダード」の方は上級者向けです。
あなたが社内業務の改善を行う立場であっても、VBAで作成したシステムをお客様に納める立場であっても、この資格は信頼や安心につながるでしょう。
以下の公式テキストが販売されています。
プログラミングの一般教養
「独学プログラマー」というプログラミングの魅力を解説した書籍があります。
これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。
今はAIにコードを尋ねれば、答えが返ってくる時代です。
しかし、この本からは「コード」以上に、プログラミングに向き合う姿勢や考え方を学ぶことができるでしょう。
こちらの記事でも紹介しています。もしよろしければご覧ください。
【初心者歓迎】無料相談受付中

いつもありがとうございます!
限られた時間をより良く使い、日本の生産性を高めたい──
みんなの実用学を運営するソフトデザイン工房では、業務整理や業務改善アプリケーション作成のご相談を承っております。
お気軽にご相談ください。
こちらの記事でも紹介しております。
おわりに

ご覧いただきありがとうございました!
この記事では、「Excelオブジェクトの操作」の中の「メッセージボックスを操作する方法」を解説しました。
お問い合わせやご要望がございましたら、「お問い合わせ/ご要望」フォームまたはコメント欄よりお知らせください。
この記事が皆様のお役に立てれば幸いです。
なお、当サイトでは様々な情報を発信しております。よろしければトップページもあわせてご覧ください。
この記事を書いた人






