エクセルマクロでユーザーに情報を伝えるために、MsgBox
(メッセージボックス)は非常に便利なツールです。
基本的にマクロは作業を自動実行してくれます。
そのためユーザーは何も考えずにマクロ実行を開始してしまいがちです。
しかし、MsgBox
を活用することで、下記のようなことを確認しながら処理を進めることが可能になります。
- インプットするファイルは正しいか?
- 大量データの処理を継続して良いか?
- データを削除して良いか?
これにより、ユーザーが「こんなアウトプットになると思っていなかった。。。」という状況に陥るのを防ぐことができます。
この記事では、MsgBox
の基本的な使い方から応用例までを詳しく解説します。
MsgBox関数の基本構文とシンプルな表示例
MsgBox
関数は、メッセージを表示するための最も基本的な方法です。
基本構文
MsgBox プロンプト, [ボタン], [タイトル], [ヘルプファイル], [コンテキスト]
- プロンプト: 表示するメッセージを指定します。
- ボタン(省略可): 表示するボタンの種類を指定します。
- タイトル(省略可): メッセージボックスのタイトルを指定します。
- ヘルプファイル(省略可): ヘルプボタンを表示するためのヘルプファイルを指定します。(使わなくてOK)
- コンテキスト(省略可): ヘルプコンテキストIDを指定します。(使わなくてOK)
シンプルな表示例
次の例では、最低限のシンプルなメッセージを表示します。
Sub BasicMsgBox()
MsgBox "Hello, World!"
End Sub

Yes/Noなどボタンの追加方法とユーザー応答の取得
ユーザーに確認を取る場面では、”Yes”と”No”の2択でボタンを設定するのが便利です。
これを実現するには、ボタンの種類にvbYesNo
を設定します。
基本的な書き方
Dim response As VbMsgBoxResult
response = MsgBox("保存しますか?", vbYesNo)

このコードでは、vbYesNo
によって”Yes”と”No”のボタンが表示され、ユーザーが押したボタンによって response
に結果が格納されます。
ユーザーの応答に応じて処理を分ける
次のように、If
文や Select Case
を使って応答ごとの処理を分岐できます。
If文を使った例
Dim response As VbMsgBoxResult
response = MsgBox("保存しますか?", vbYesNo)
If response = vbYes Then
MsgBox "保存を実行します"
Else
MsgBox "保存をキャンセルしました"
End If
Select Case文を使った例
Dim response As VbMsgBoxResult
response = MsgBox("保存しますか?", vbYesNo)
Select Case response
Case vbYes
MsgBox "処理を開始します"
Case vbNo
MsgBox "処理を中止しました"
End Select
情報・警告・エラーなどのアイコン表示方法
MsgBox
では、アイコンを表示してユーザーに直感的なメッセージを伝えることができます。
処理内容に応じて、以下のアイコンを表示できます。
アイコン | ボタンの引数 | 説明 |
---|---|---|
![]() | vbInformation | 通知、成功など |
![]() | vbExclamation | 注意を促すメッセージ |
![]() | vbCritical | 処理失敗や重大なエラー |
![]() | vbQuestion | Yes/No などの選択を促す質問 |
アイコン追加方法(情報アイコンを表示)
MsgBox "保存が完了しました", vbInformation

上記コードのように、2番目の引数を vbInformation
とすると情報アイコンを表示することができます。
上述のボタンの追加方法でも、2番目の引数にvbYesNo
(ボタン設定のための定数)を設定していました。
ボタンとアイコン両方を設定するには、ボタンの定数とアイコンの定数を+
で組み合わせて記述することで実現できます。
ボタンとアイコン両方設定する方法
ボタンの定数とアイコンの定数を組み合わせて記述する実際のコードがこちらです。
Dim response As VbMsgBoxResult
response = MsgBox("本当に削除しますか?", vbExclamation + vbYesNo)
If response = vbYes Then
MsgBox "削除しました", vbInformation
Else
MsgBox "キャンセルしました", vbInformation
End If

上記コードでは、2番目の引数にvbExclamation
とvbYesNo
を+
で組み合わせて記述しています。
このように、アイコンを表示してあげることで、ユーザーにとってメッセージの意味が直感的に理解しやすくなり「使いやすいマクロだな」と感じてもらうことに繋がります。
まとめ
MsgBox
を使えば、エクセルマクロでユーザーに簡単にメッセージを伝えることができます。基本的な使い方から、ボタンオプション、アイコンの使用、戻り値の利用、詳細設定まで、様々な方法でメッセージボックスを活用できます。この記事を参考にして、ぜひマクロの中で活用してみてください。
エクセルマクロに関する他の質問やリクエストがあれば、コメントで教えてください!