「VBAで、メッセージボックスを表示したいけど、どうやって表示すればいいんだろう…」
そんな疑問を持っていませんか?

・ユーザーに情報を伝えるためのメッセージを簡単に表示したい
・プログラムの流れに応じて、ユーザーからの入力を求めたい
・VBA初心者だけどMsgBox (メッセージボックス)を使いたい



その場合は、VBAの「MsgBox (メッセージボックス)」を
使用すると解決します!
この記事では、VBAの「MsgBox (メッセージボックス)」を使ってメッセージを表示したり、ユーザーからの入力を求める方法を詳しく解説します。
「MsgBox (メッセージボックス)」を使うことで、Excel VBAでのユーザーインタラクションがスムーズになり、プログラムの実行を制御することができます。
使用例もすべてコピペして実行できるので、ぜひ最後までご覧いただき、実践してみてください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を読むと「できるようになる」こと
この記事を読むことで、以下のことができるようになります。
- 「MsgBox」の基本的な使い方を学ぶ
- 「MsgBox」で条件分岐をする方法を習得する
- 「MsgBox」がよく使用される場面を把握する
- 「MsgBox」を使用する際の注意ポイントを把握する
- 「MsgBox」の使用例を確認し、実際に使ってみる
VBA MsgBox (メッセージボックス) は、どんなことができる?
MsgBox (メッセージボックス) は、Excel VBAでメッセージの表示やユーザーの入力を求めるために使われるダイアログボックスです。


VBA メッセージボックスを使うことで、以下のような多くの機能を実現できます。
MsgBox (メッセージボックス)で出来ること
- ユーザーへの通知
プログラムの進行状況やエラーメッセージを、メッセージボックスでユーザーに知らせることができます。 - 選択の確認
メッセージボックスで「Yes/No」や「OK/キャンセル」ボタンを表示して、ユーザーに選択を求め、その結果に応じて処理を分岐させることが可能です。 - 結果の取得
メッセージボックスを使ってユーザーの選択結果を変数に格納し、その結果でプログラムの流れを制御できます。 - メッセージのカスタマイズ
メッセージに改行を加えたり、特定のアイコンを設定するなど、見た目をカスタマイズして情報をよりわかりやすく伝えることができます。 - 変数の表示
メッセージボックスで、プログラム内の変数の値を表示し、ユーザーに動的な情報を提供することも可能です。 - 応用的な分岐処理
メッセージボックスの選択肢に応じて、プログラムの動作を柔軟に制御できます。
たとえば、「はい」や「いいえ」を選ばせて、その選択に基づいた処理を行うことができます。
MsgBox (メッセージボックス)の基本構文と設定方法
VBAでMsgBox (メッセージボックス)を使う際の基本構文は以下の通りです。




- prompt (必須) ⇒ promptの設定方法
- MsgBoxで表示するメッセージを指定します。
最大で約 1024 文字まで記述することができます。
メッセージボックスで「処理が完了しました」と表示したい場合、promptにメッセージを入力します。
- MsgBoxで表示するメッセージを指定します。
- buttons (省略可能) ⇒ buttonsの種類
- メッセージボックスに表示するボタンやアイコンを指定します。
例えば、VBA メッセージボックスで「処理が完了しました」と表示したい場合、promptにそのメッセージを入力します。
- メッセージボックスに表示するボタンやアイコンを指定します。
- title (省略可能) ⇒ titleの設定方法
- メッセージボックスのタイトルバーに表示する文字列を指定します。
省略すると「Microsoft Excel」と表示されます。ユーザーにわかりやすいメッセージを表示するために、タイトルも設定しておくと良いでしょう。
- メッセージボックスのタイトルバーに表示する文字列を指定します。
- helpfile (省略可能) ⇒ helpfileの設定方法
- メッセージボックスに関連付けるヘルプファイルを指定するために使用されます。
現在ではあまり使用されることはありません。
- メッセージボックスに関連付けるヘルプファイルを指定するために使用されます。
- context (省略可能) ⇒ contextの設定方法
- helpfile 引数で指定したヘルプファイル内の特定のトピックを指定するために使用されます。
現在ではあまり使用されることはありません。
- helpfile 引数で指定したヘルプファイル内の特定のトピックを指定するために使用されます。
より詳しい情報は、Microsoft公式のMsgBox 関数を参照してください。


prompt (必須)の設定方法について
VBAのMsgBox (メッセージボックス)で表示するメッセージは必ず指定する必要があります。
その記載方法について紹介します。
シンプルなメッセージを表示する方法
MsgBox (メッセージボックス)で表示するメッセージは、必ず指定する必要があります。
通常のメッセージを表示する場合、単純に文字列を指定します。
以下のコードは、シンプルなメッセージを表示する例です。
Sub ShowSimpleMessage()
MsgBox "これはシンプルなメッセージです"
End Sub
このコードを実行すると、「これはシンプルなメッセージです」というテキストがメッセージボックスに表示されます。
これはMsgBoxの最も基本的な使用例となります。


複数の変数を使ったメッセージの表示
また、MsgBox (メッセージボックス)では、複数の変数を結合して表示することもできます。
例えば、以下のコードでは2つの変数 (文字列)を結合してメッセージを作成しています。
Sub ShowConcatenatedMessage()
Dim part1 As String
Dim part2 As String
part1 = "こんにちは、"
part2 = "MsgBoxのテストテキストです!"
MsgBox part1 & part2
End Sub
このコードでは、「こんにちは、MsgBoxのテストテキストです!」というメッセージが表示されます。


MsgBoxでは、このように変数を使用して、プログラム中の様々なデータをメッセージに組み込むこともできます。
メッセージで改行を入れる方法
MsgBox (メッセージボックス)でメッセージを記述する際に、複数行にわたってメッセージを表示したい場合は、改行コード「vbCrLf」を使用します。
※「vbCrLf」は、VBAで改行を挿入するための定数で、「キャリッジリターン(Cr)」と「ラインフィード(Lf)」を組み合わせたものです。
これにより、メッセージボックスやテキストに改行を挿入することができます。
Sub ShowMessageWithLineBreak()
MsgBox "行1" & vbCrLf & "行2" & vbCrLf & "行3"
End Sub
このコードは、MsgBoxに「行1」「行2」「行3」が、それぞれ改行された状態で表示されます。


MsgBoxでは、このように「vbCrLf」を使うことで、長いメッセージを読みやすくすることが可能です。
buttons (省略可能) の設定方法について
VBAのMsgBox (メッセージボックス)では、引数の「buttons (省略可能)」を設定して、以下の通り「選択ボタンの種類」や「アイコンの種類」及び「デフォルトボタンの設定 (初期でEnterキーを押したときに動作するボタン)」を設定することができます。
buttons (省略可能)の使用例をご紹介
まずは、「buttons (省略可能)」を使用したサンプルコードを見てみましょう。
Sub buttons_test()
Dim userResponse As VbMsgBoxResult
userResponse = MsgBox("サンプル", vbYesNoCancel + vbInformation + vbDefaultButton2)
End Sub
このコードでは、「はい」「いいえ」「キャンセル」ボタンと情報アイコンが表示されるメッセージボックスを作成します。


それでは、「buttons (省略可能)」の設定方法について、詳しく見ていきましょう。
「選択ボタン」の種類について解説
MsgBox (メッセージボックス)では、以下の定数を使ってボタンの種類を設定できます。
例えば、「OK」ボタンや「はい(Y)/いいえ(N)」などを指定できます。
定数 | ボタンの種類 | 値 | 説明 |
---|---|---|---|
vbOKOnly | ![]() ![]() | 0 | [OK] ボタンを表示する(デフォルト) |
vbOKCancel | ![]() ![]() | 1 | [OK] ボタンと [キャンセル] ボタンを表示 |
vbAbortRetryIgnore | ![]() ![]() | 2 | [中止] ボタン、[再試行] ボタン、 [無視] ボタンを表示 |
vbYesNoCancel | ![]() ![]() | 3 | [はい] ボタン、[いいえ] ボタン、 [キャンセル] ボタンを表示 |
vbYesNo | ![]() ![]() | 4 | [はい] ボタンと [いいえ] ボタンを 表示 |
vbRetryCancel | ![]() ![]() | 5 | [再試行] ボタンと [キャンセル] ボタンを表示 |
これらの定数を組み合わせて、MsgBoxのボタンをカスタマイズすることができます。
「アイコン」の種類について解説
MsgBox (メッセージボックス)では、メッセージの左側に表示できる「アイコン」を設定することも可能です。
以下の定数を使用して、適切なアイコンを選べます。
定数 | アイコン | 値 | 説明 |
---|---|---|---|
vbCritical | ![]() ![]() | 16 | 警告メッセージのアイコンを表示 |
vbQuestion | ![]() ![]() | 32 | 質問メッセージのアイコンを表示 |
vbExclamation | ![]() ![]() | 48 | 警告メッセージのアイコンを表示 |
vbInformation | ![]() ![]() | 64 | 情報メッセージのアイコンを表示 |
このように、MsgBoxのアイコンを使うと、ユーザーにメッセージの内容を視覚的に伝えやすくなります。
「デフォルトボタン」の設定方法について解説
MsgBox (メッセージボックス)が表示された際に「選択ボタン」が、デフォルトでどのボタンを選択されているか?を選択することができます。
定数 | 値 | 説明 |
---|---|---|
vbDefaultButton1 | 0 | 1 番目のボタンを既定のボタンにする |
vbDefaultButton2 | 256 | 2 番目のボタンを既定のボタンにする |
vbDefaultButton3 | 512 | 3 番目のボタンを既定のボタンにする |
vbDefaultButton4 | 768 | 4 番目のボタンを既定のボタンにする |
このデフォルトボタンを設定することで、ユーザーが初期でEnterキーを押したときに動作するボタンを設定することができます。
title (省略可能) の設定方法について
VBAのMsgBox (メッセージボックス)では、title引数を使ってメッセージボックスのタイトルバーに表示される文字列を指定します。
省略した場合、デフォルトで「Microsoft Excel」と表示されます。
ユーザーにメッセージの内容をわかりやすく伝えるために、適切なタイトルを設定することをお勧めします。
title引数の設定例
以下のコードでは、MsgBoxに「カスタムタイトル」を表示する例を示します。
Sub TitleExample()
MsgBox "これはメッセージです", , "カスタムタイトル"
End Sub
このコードを実行すると、メッセージボックスのタイトルバーに「カスタムタイトル」と表示されます。
MsgBoxのタイトルを設定することで、メッセージの内容に合わせたタイトルを表示することが可能です。


helpfile 省略可能の設定方法について
VBAのMsgBox (メッセージボックス)には、helpfile引数を使ってヘルプファイルを指定することができます。
この引数を使用すると、メッセージボックスに「ヘルプ」ボタンが表示され、ユーザーがそのボタンをクリックすると指定されたヘルプファイル(通常は .chm ファイル)が開きます。
ただし、「helpfile 引数」 および「context 引数」は、現在のVBAプロジェクトではほとんど使用されません。
また、ヘルプファイルが正しく配置されていないと、ヘルプボタンが機能しないため、実際に利用する際には注意が必要です。
helpfileの設定例
以下は、MsgBoxにヘルプボタンを表示し、特定のヘルプファイルを開くためのコード例です。
Sub HelpFileExample()
MsgBox "詳細はヘルプをご覧ください", vbOKOnly, "ヘルプメッセージ", "C:\Path\To\HelpFile.chm", 1
End Sub
このコードでは、メッセージボックスに「ヘルプ」ボタンが表示され、クリックすると指定されたヘルプファイルが開きます。
しかし、現在のプロジェクトでは .chm ファイルを使用する機会が少なく、この機能を利用するケースは稀です。
適切なヘルプファイルがない場合、この機能は動作しません。
context 省略可能の設定方法について
VBAのMsgBox (メッセージボックス)では、context引数を使ってヘルプファイルの特定トピックにジャンプすることができます。
これにより、ユーザーが「ヘルプ」ボタンをクリックした際に、指定したトピック番号に直接アクセスできます。
ただし、context引数やhelpfile引数は現在のVBAプロジェクトではほとんど使用されません。
また、指定したヘルプファイルが存在しない場合、この機能は動作しません。
contextの設定例
以下のコードは、MsgBoxのcontext引数を使用して、ヘルプファイル内の特定セクションにジャンプする例です。
Sub ContextExample()
MsgBox "詳細はヘルプをご覧ください", vbOKOnly, "ヘルプメッセージ", "C:\Path\To\HelpFile.chm", 100
End Sub
このコードでは、メッセージボックスに指定されたトピック番号(100)が関連付けられており、ヘルプファイル内の該当セクションが開かれるようになっています。
しかし、現在のプロジェクトでこの機能を使うことはほとんどなく、適切なヘルプファイルとトピックが存在しない場合、この機能は期待通りに動作しません。
MsgBox (メッセージボックス)で変数を使用し条件分岐をする方法
VBAのMsgBox (メッセージボックス)では、ユーザーの選択に応じて処理を分岐させる「条件分岐」を行うことができます。
たとえば、「はい」「いいえ」の選択肢を提示し、ユーザーが「はい」を選択した場合は処理を続行し、「いいえ」を選択した場合は処理を中止する、といった条件分岐を簡単に実現できます。
条件分岐の具体的なコード例
以下のコードは、MsgBoxでユーザーの選択に基づいて処理を分岐させる例です。
Sub DisplayUserChoice()
Dim userResponse As VbMsgBoxResult
userResponse = MsgBox("処理を続行しますか?", vbYesNo + vbQuestion, "確認")
If userResponse = vbYes Then
MsgBox "処理を続行します。"
'// 処理を続けるコードをここに記述
Else
MsgBox "処理を中止しました。"
'// 処理を中止するコードをここに記述
End If
End Sub
このコードでは、ユーザーが「はい」を選択した場合は処理が続行され、「いいえ」を選択した場合は処理が中止されます。


MsgBox関数は、ユーザーの選択結果を「VbMsgBoxResult型」の変数に格納し、その結果に基づいて処理を分岐させています。
注釈: 変数に使用されている「VbMsgBoxResult型」は、MsgBox関数の戻り値として定義される型で、ユーザーが選択したボタンに応じた数値を格納します。この数値を使って処理を分岐させることができます。
前の例では「vbYes」を条件として使用しましたが、「数値」でも同様に条件を設定することが可能です。
次の見出しで、MsgBoxでユーザーが選択した結果がどのような数値で返されるかを解説します。
ユーザーの選択結果を数値として変数に格納する場合
VBA メッセージボックス (MsgBox)では、ユーザーの選択結果を数値として判定することも可能です。
先ほどの例では「vbYes」を使いましたが、MsgBoxが返す結果を数値で判断することで、より柔軟な条件分岐を行えます。
選択肢 | 数値 (VbMsgBoxResult) | 説明 |
---|---|---|
OK | 1 | [OK] ボタンが押された |
Cancel | 2 | [キャンセル] ボタンが押された |
Abort | 3 | [中止] ボタンが押された |
Retry | 4 | [再試行] ボタンが押された |
Ignore | 5 | [無視] ボタンが押された |
Yes | 6 | [はい] ボタンが押された |
No | 7 | [いいえ] ボタンが押された |
通常、「VbMsgBoxResult型」を使用して結果を処理しますが、必要に応じて「数値型(Number型)」で扱うことも可能です。
以下のように、選択結果を数値で判断することで、条件分岐を行うことができます。
Sub CheckUserChoice()
Dim result As Integer
result = MsgBox("処理を続行しますか?", vbYesNo + vbQuestion, "確認")
If result = 6 Then ' 6 は vbYes に対応
MsgBox "処理を続行します。"
ElseIf result = 7 Then ' 7 は vbNo に対応
MsgBox "処理を中止しました。"
End If
End Sub


この例では、MsgBoxの選択結果を数値で判定しています
ただし、「VbMsgBoxResult型」を使うほうがコードの可読性が高く、エラーを防ぎやすいため、通常は定数を使う方法がおすすめです。
MsgBox (メッセージボックス)がよく使用される場面
MsgBox (メッセージボックス)はユーザーへのメッセージ表示や選択肢を求めるために頻繁に使われます。
以下のようなシーンで活用されています。
ユーザーの確認と条件分岐が必要な場面
ユーザーに確認を求める際には、メッセージボックスで「Yes/No」や「OK」ボタンを表示して、選択に応じた処理を行うことができます。
特に、「データ削除」のような重要な操作では、MsgBoxの条件分岐を使うことで、安全なデータ操作が可能です。
例えば、「データ削除」の前にユーザーの確認を求める場合のコードは以下の通りです。
Sub ConfirmDeletion()
Dim userResponse As VbMsgBoxResult
userResponse = MsgBox("本当にデータを削除しますか?", vbYesNo + vbExclamation, "確認")
If userResponse = vbYes Then
MsgBox "データを削除しました。"
'// データ削除のコードをここに記述
Else
MsgBox "削除をキャンセルしました。"
'// キャンセル処理のコードをここに記述
End If
End Sub


このコードでは、「はい (Y)」と「いいえ (N)」の選択肢を提示し、ユーザーの選択に基づいて処理を分岐させます。
MsgBoxを使った条件分岐によって、ユーザーに選択を促し、データ操作をより安全に行うことができます。
処理が完了した際の通知
処理が完了したことをユーザーに通知するために、メッセージボックスを使うこともあります。
これは、単純にユーザーにメッセージを伝えるためのものです。
Sub NotifyCompletion()
MsgBox "処理が完了しました。", vbInformation, "完了"
End Sub


このように、MsgBoxのアイコンを設定することで、情報をわかりやすく伝えることができます。
上記の例では、情報アイコンを付加して処理完了を通知しています。
MsgBox (メッセージボックス)を使用する際の注意ポイント
MsgBox (メッセージボックス)を使用する際には、いくつかの注意ポイントがあります。
これらを意識することで、予期せぬトラブルを避けることができます。
- メッセージ内容を長くしすぎない
- MsgBoxに表示されるメッセージが長すぎると、ユーザーが内容を理解するのに時間がかかり、操作性が低下します。
短くて要点をまとめたメッセージを心がけましょう。
また、適切な箇所で改行を活用するとよいでしょう。
- MsgBoxに表示されるメッセージが長すぎると、ユーザーが内容を理解するのに時間がかかり、操作性が低下します。
- 必要以上にMsgBoxを多用しない
- MsgBoxを頻繁に表示すると、ユーザーにとって煩わしいと感じることがあります。
重要な場面でのみMMsgBoxを使用し、他の場面ではステータスバーやセルにメッセージを表示するなどの代替手段を検討しましょう。
- MsgBoxを頻繁に表示すると、ユーザーにとって煩わしいと感じることがあります。
- メッセージの内容に応じて適切なアイコンを使用する
- メッセージボックスの内容に合わせて、MsgBoxのアイコンを適切に使うことで、視覚的にメッセージを伝えやすくなります。
たとえば、エラーメッセージには警告アイコン(vbExclamation)、確認メッセージには質問アイコン(vbQuestion)を使用しましょう。
- メッセージボックスの内容に合わせて、MsgBoxのアイコンを適切に使うことで、視覚的にメッセージを伝えやすくなります。
- MsgBoxとInputBoxの違い
- MsgBoxは、ユーザーにメッセージを表示して選択肢を提示するために使いますが、ユーザーから直接の入力を取得することはできません。
一方で、ユーザーにテキスト入力を求める場合には「InputBox」を使用しましょう。
「InputBox」は、ユーザーからのデータ入力に適しています。
- MsgBoxは、ユーザーにメッセージを表示して選択肢を提示するために使いますが、ユーザーから直接の入力を取得することはできません。
MsgBox (メッセージボックス)を使用方法をご紹介
ここからは、Msgbox (メッセージボックス)の具体的な使用例を紹介します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。


\ 自分のペースで学べるVBA講座はこちら /
使用例1: 簡単なメッセージを表示する
VBAでMsgBox (メッセージボックス)を使用して、ユーザーに簡単な通知を表示する方法を紹介します。
主な使用用途
処理が完了したことをユーザーに知らせたい場合や、情報を提供するために使用します。
コード例
Sub SimpleMessageBox()
MsgBox "処理が完了しました。", vbInformation, "通知"
End Sub
処理結果


コードの動作概要
MsgBox関数を使用して、メッセージボックスを表示します。
このメッセージボックスには、「処理が完了しました。」というメッセージが表示され、情報アイコン(vbInformation)が付いています。
また、タイトルバーには「通知」と表示されます。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub SimpleMessageBox()
- この行で、新しいサブルーチン(マクロ)「SimpleMessageBox」を定義しています。
これを実行すると、指定されたタスクが実行されます。
- この行で、新しいサブルーチン(マクロ)「SimpleMessageBox」を定義しています。
- MsgBox “処理が完了しました。”, vbInformation, “通知”
- MsgBox関数は、指定されたメッセージを表示するメッセージボックスを表示します。
ここでは、以下の要素を指定しています。- 「”処理が完了しました。”」 : ユーザーに表示するメッセージ。
- vbInformation : メッセージボックスに情報アイコン(”i”)を表示する定数。
- 「”通知”」 : メッセージボックスのタイトルバーに表示される文字列。
- MsgBox関数は、指定されたメッセージを表示するメッセージボックスを表示します。
- End Sub
- この行で、Sub SimpleMessageBoxのサブルーチンが終了することを示しています。
これでサブルーチンのすべての処理が完了します。
- この行で、Sub SimpleMessageBoxのサブルーチンが終了することを示しています。
このコードを使用すると、VBAで処理が完了したことをユーザーに通知するメッセージボックスを簡単に表示できます。
特に、ユーザーに重要な情報を知らせる必要がある場合や、プロセスの終了を確認させたい場合に便利です。
使用例2: 「はい/いいえ」でユーザーに確認を求める
メッセージボックスでユーザーに「はい/いいえ」で確認を求め、その選択に応じて処理を続行するか中止する方法を紹介します。
コード例
Sub UserChoiceExample()
Dim response As VbMsgBoxResult
response = MsgBox("本当に終了しますか?", vbYesNo + vbQuestion, "確認")
If response = vbYes Then
MsgBox "プログラムを終了します。"
'// 終了処理のコード
Else
MsgBox "キャンセルされました。"
'// キャンセル処理のコード
End If
End Sub
処理結果


コードの動作概要
MsgBox関数を使用して、ユーザーに「はい(Y)/いいえ(N)」の選択肢を持つ確認メッセージボックスを表示します。
ユーザーが「はい」を選択した場合は処理を続行し、「いいえ」を選択した場合は処理を中止します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub UserChoiceExample()
- この行で、「UserChoiceExample」という新しいサブルーチン(マクロ)を定義しています。
このサブルーチンは、ユーザーに確認を求め、その応答に基づいて処理を行います。
- この行で、「UserChoiceExample」という新しいサブルーチン(マクロ)を定義しています。
- Dim response As VbMsgBoxResult
- ここでは、「response」という変数を定義しています。
この変数は「VbMsgBoxResult型」であり、ユーザーの選択結果(「はい」「いいえ」など)を格納します。
- ここでは、「response」という変数を定義しています。
- response = MsgBox(“本当に終了しますか?”, vbYesNo + vbQuestion, “確認”)
- MsgBox関数を使用して、ユーザーに「本当に終了しますか?」という確認メッセージを表示します。
このメッセージボックスには、「はい(Yes)」と「いいえ(No)」のボタンが表示されます。
また、アイコンは質問アイコン(vbQuestion)で、タイトルバーには「確認」と表示されます。
ユーザーが選択した結果は、変数「response」に格納されます。
- MsgBox関数を使用して、ユーザーに「本当に終了しますか?」という確認メッセージを表示します。
- If response = vbYes Then
- Ifステートメントを使用して、ユーザーの選択結果が「はい(Yes)」であるかどうかを確認します。
変数「response」の値が「vbYes(「はい」)」に等しい場合に、次の行のコードが実行されます。
- Ifステートメントを使用して、ユーザーの選択結果が「はい(Yes)」であるかどうかを確認します。
- MsgBox “プログラムを終了します。”
- ユーザーが「はい」を選択した場合、MsgBox関数を使用して「プログラムを終了します。」というメッセージを表示します。
- ‘// 終了処理のコード
- ここには、実際にプログラムを終了するためのコードが記述されます。
この行はコメントアウトされており、実際の終了処理はここに追加する必要があります。
- ここには、実際にプログラムを終了するためのコードが記述されます。
- Else
- IfステートメントのElse部分です。
ユーザーが「いいえ(No)」を選択した場合に、次の行のコードが実行されます。
- IfステートメントのElse部分です。
- MsgBox “キャンセルされました。”
- ユーザーが「いいえ」を選択した場合、MsgBox関数を使用して「キャンセルされました。」というメッセージを表示します。
- ‘// キャンセル処理のコード
- ここには、キャンセル時の処理コードを記述します。
この行もコメントアウトされており、実際のキャンセル処理はここに追加します。
- ここには、キャンセル時の処理コードを記述します。
- End If
- Ifステートメントの終了を示します。
ここで条件分岐の処理が完了します。
- Ifステートメントの終了を示します。
- End Sub
- この行で、UserChoiceExampleサブルーチンの定義が終了します。
これにより、サブルーチンのすべての処理が完了します。
- この行で、UserChoiceExampleサブルーチンの定義が終了します。
このコードは、ユーザーに対してプログラムの終了を確認するメッセージボックスを表示し、その選択に基づいて処理を行います。
MsgBox関数を使用してユーザーからの入力を取得し、その結果を「Ifステートメント」で評価することで、簡単にプログラムのフローを制御できます。
このような確認メッセージは、誤操作を防ぐための重要な手段であり、特に重要な操作(例: プログラムの終了やデータの削除など)において、ユーザーに最終確認を促すことで、安全性と信頼性を高めることができます。
実際のシナリオでは、このサブルーチンをベースにして、適切な終了処理やキャンセル処理のコードを追加することで、ユーザーの意図に応じた柔軟なプログラムを構築することが可能です。
使用例3: デフォルトボタンを設定する
メッセージボックスでデフォルトのボタンを指定することで、ユーザーが特定の選択肢を優先的に選ぶように設定できます。
以下の例では、「いいえ」ボタンをデフォルトに設定しています。
コード例
Sub DefaultButtonExample()
Dim userResponse As VbMsgBoxResult
userResponse = MsgBox("処理を続行しますか?", vbYesNoCancel + vbDefaultButton2, "確認")
If userResponse = vbYes Then
MsgBox "処理を続行します。"
ElseIf userResponse = vbNo Then
MsgBox "処理を中止しました。"
Else
MsgBox "キャンセルされました。"
End If
End Sub
処理結果


コードの動作概要
MsgBox関数を使用して、ユーザーに「はい(Y)」「いいえ(N)」「キャンセル」の3つの選択肢を持つメッセージボックスを表示します。
このとき、vbDefaultButton2を設定しているため、デフォルトで「いいえ(N)」ボタンが選択される状態になります。
⇒ 「デフォルトボタン」の設定方法について解説をもう一度見る。
- ユーザーが「はい」を選択した場合は、処理を続行します。
- ユーザーが「いいえ」を選択した場合は、処理を中止します。
- ユーザーが「キャンセル」を選択した場合は、「キャンセルされました。」というメッセージを表示します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub DefaultButtonExample()
- この行で「DefaultButtonExample」という新しいサブルーチン(マクロ)を定義しています。
このサブルーチンは、ユーザーに確認を求め、その選択に基づいて処理を分岐させます。
- この行で「DefaultButtonExample」という新しいサブルーチン(マクロ)を定義しています。
- Dim userResponse As VbMsgBoxResult
- 「userResponse」という変数を定義します。
この変数は「VbMsgBoxResult型」であり、ユーザーの選択結果(「はい」「いいえ」「キャンセル」など)を格納します。
- 「userResponse」という変数を定義します。
- userResponse = MsgBox(“処理を続行しますか?”, vbYesNoCancel + vbDefaultButton2, “確認”)
- MsgBox関数を使用して、ユーザーに「処理を続行しますか?」という確認メッセージを表示します。
- ボタンの種類は「vbYesNoCancel」で、「はい」「いいえ」「キャンセル」の3つの選択肢が表示されます。
- vbDefaultButton2を使用することで、「いいえ」ボタンをデフォルト(最初に選択された状態)に設定しています。
- 表示されたメッセージボックスの選択結果は、変数「userResponse」に格納されます。
- MsgBox関数を使用して、ユーザーに「処理を続行しますか?」という確認メッセージを表示します。
- If userResponse = vbYes Then
- Ifステートメントを使用して、ユーザーの選択が「はい(vbYes)」であるかどうかを確認します。
もしuserResponseが「vbYes」に等しい場合は、次の行のコードが実行されます。
- Ifステートメントを使用して、ユーザーの選択が「はい(vbYes)」であるかどうかを確認します。
- MsgBox “処理を続行します。”
- ユーザーが「はい」を選択した場合、MsgBox関数を使用して「処理を続行します。」というメッセージを表示します。
- ElseIf userResponse = vbNo Then
- ElseIfステートメントを使用して、ユーザーの選択が「いいえ(vbNo)」であるかどうかを確認します。
もしuserResponseが「vbNo」に等しい場合は、次の行のコードが実行されます。
- ElseIfステートメントを使用して、ユーザーの選択が「いいえ(vbNo)」であるかどうかを確認します。
- MsgBox “処理を中止しました。”
- ユーザーが「いいえ」を選択した場合、MsgBox関数を使用して「処理を中止しました。」というメッセージを表示します。
- Else
- IfステートメントのElse部分です。
ユーザーが「キャンセル」を選択した場合に、次の行のコードが実行されます。
- IfステートメントのElse部分です。
- MsgBox “キャンセルされました。”
- ユーザーが「いいえ」を選択した場合、MsgBox関数を使用して「キャンセルされました。」というメッセージを表示します。
- End If
- Ifステートメントの終了を示します。
ここで条件分岐の処理が完了します。
- Ifステートメントの終了を示します。
- End Sub
- この行で、UserChoiceExaこの行で「DefaultButtonExample」サブルーチンの定義が終了します。これにより、サブルーチンのすべての処理が完了します。
このコードでは、MsgBox関数を使って「はい」「いいえ」「キャンセル」の3つの選択肢を持つ確認メッセージボックスを表示し、デフォルトで「キャンセル」ボタンが選択されるように設定しています。
選択結果は「VbMsgBoxResult型」の変数に格納され、その結果に基づいて処理を分岐させる仕組みです。
デフォルトボタンを設定することで、ユーザーが無意識に「Enterキー」を押しても意図しない操作を防ぐことができます。
このような制御は、重要な操作やデータの削除など、ユーザーの意図に沿った安全な処理を実現するために役立ちます。
このサブルーチンをベースにして、ユーザーの意図に応じた柔軟なプログラムを構築することができます。
例えば、処理を続行する際の詳細な手続きや、キャンセル時の復元処理を追加することで、ユーザーにとって信頼性の高いプログラムを作成することが可能です。
この記事のまとめ
MsgBoxを活用することで、Excel VBAでのユーザーインタラクションが簡単に実現でき、プログラムの操作性が向上します。
正しい使い方を学び、効果的に使用することで、ユーザーにとっても使いやすいプログラムを作成できるようになります。
ポイントのおさらい
- MsgBox (メッセージボックス)の基本構文を理解する
- MsgBoxの基本的な使い方と各引数の設定方法を理解し、適切にメッセージボックスを作成できるようになりましょう。
⇒ 「VBAのMsgBoxとは?」をもう一度見る。
- MsgBoxの基本的な使い方と各引数の設定方法を理解し、適切にメッセージボックスを作成できるようになりましょう。
- 変数の値をMsgBox (メッセージボックス)で表示する
- MsgBoxでユーザーの選択結果を変数に格納し、その結果に基づいて処理を分岐させる方法をマスターしましょう。
⇒ 「MsgBoxで条件分岐をする方法」をもう一度見る。
- MsgBoxでユーザーの選択結果を変数に格納し、その結果に基づいて処理を分岐させる方法をマスターしましょう。
- 改行を使ってメッセージを分かりやすくする
- MsgBoxで複数行にわたるメッセージを表示する方法を学び、ユーザーにとってわかりやすいメッセージボックスを作成しましょう。
⇒ 「MsgBoxで改行を入れる方法」もう一度見る。
- MsgBoxで複数行にわたるメッセージを表示する方法を学び、ユーザーにとってわかりやすいメッセージボックスを作成しましょう。
- MsgBox (メッセージボックス)がよく使用される場面を把握する使用例
- MsgBoxがよく使用されるシナリオを理解し、適切な場面でメッセージボックスを利用できるようにしましょう。
⇒ 「Msgboxがよく使用される場面」もう一度見る。
- MsgBoxがよく使用されるシナリオを理解し、適切な場面でメッセージボックスを利用できるようにしましょう。
- MsgBox (メッセージボックス)を使用する際の注意ポイントを理解する
- MsgBoxを使用する際の注意ポイントを把握し、ユーザーにとってわかりやすく、煩わしくないインタラクションを実現しましょう。
⇒ 「MsgBoxを使用する際の注意ポイント」もう一度見る。
- MsgBoxを使用する際の注意ポイントを把握し、ユーザーにとってわかりやすく、煩わしくないインタラクションを実現しましょう。
- MsgBox (メッセージボックス)の実際の使用例を確認する
- MsgBoxの使用例を通して、具体的な使い方を確認し、実践的に利用できるスキルを身に付けましょう。
⇒ 「Msgboxを使用してみよう」をもう一度見る。
- MsgBoxの使用例を通して、具体的な使い方を確認し、実践的に利用できるスキルを身に付けましょう。
この記事の内容を実践することで、VBAでのユーザーインタラクションが効果的に行え、プログラムの操作性が向上することを期待できます。
まずは、サンプルコードを試してみて、自分のプロジェクトに取り入れてみてください。

