VBA入門
メッセージボックス(MsgBox関数)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2021-08-25

第23回.メッセージボックス(MsgBox関数)


マクロ VBA MsgBox関数

メッセージを表示するダイアログボックス(小さな画面)を表示します。
ユーザーに選択(「はい」「いいえ」や「OK」「CANCEL」等)してもらい、その選択結果を受け取る事も出来ます。
マクロVBAでメッセージボックスを表示するにはMsgBox関数を使います。


関数とは、
多くの人が共通して必要となる機能(命令)を一塊にしてプログラミング言語として用意されているものです。

MsgBox関数の構文

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

prompt 必ず指定します。
ダイアログ ボックス内にメッセージとして表示する文字列を示す文字列式を指定します。
名前付き引数 prompt に指定できる最大文字数は、1 バイト文字で約 1,024 文字です。
ただし、使う文字の文字幅に依存します。
名前付き引数 prompt に複数行を指定する場合は、キャリッジ リターン (Chr(13))、ライン フィード (Chr(10))、またはキャリッジ リターンとライン フィードの組み合わせ (Chr(13) & Chr(10)) を改行する位置に挿入し、行を区切ってください。
buttons 省略可能です。
表示されるボタンの種類と個数、使用するアイコンのスタイル、標準ボタン、メッセージ ボックスがモーダルかどうかなどを表す値の合計値を示す数式を指定します。
省略すると、名前付き引数 buttons の既定値 0 になります。
title 省略可能です。
ダイアログ ボックスのタイトル バーに表示する文字列を示す文字列式を指定します。
名前付き引数 title を省略すると、タイトル バーにはアプリケーション名が表示されます。
helpfile 省略可能です。
ダイアログ ボックスに状況依存のヘルプを設定するために、使用するヘルプ ファイルの名前を示す文字列式を指定します。
この引数は、表示するダイアログ ボックスの説明をヘルプを使って表示するときに指定します。
名前付き引数 helpfile を指定した場合は、引数 context も指定する必要があります。
context 省略可能です。
ヘルプ トピックに指定したコンテキスト番号を表す数式を指定します。
名前付き引数 context を指定した場合は、引数 helpfile も指定する必要があります。
※上記はヘルプを整形したものです。

引数は、名前付き引数が使用できます。


名前付き引数

あらかじめ定義された名前を持つ引数。
名前付き引数を使用すると、構文どおりに指定された順序で各引数に値を指定しなくても、任意の順序で値を設定することができます。

※名前付き引数については、後々詳しく説明します。
第25回.名前付き引数について
・仮引数と実引数 ・メソッドとは ・名前付き引数について ・名前付き引数の例文 ・名前付き引数の必要性

しかしMsgBoxでは、名前付き引数を使う事はそれほど多くはありません。
名前付き引数を使用せず、順番通りに指定して構わないでしょう。


MsgBox関数のbuttonsの定数

グループ 定数 内容
ボタンの種類 vbOKOnly 0 [OK] ボタンのみを表示します。
vbOKCancel 1 [OK] ボタンと [キャンセル] ボタンを表示します。
vbAbortRetryIgnore 2 [中止]、[再試行]、および [無視] の 3 つのボタンを表示します。
vbYesNoCancel 3 [はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示します。
vbYesNo 4 [はい] ボタンと [いいえ] ボタンを表示します。
vbRetryCancel 5 [再試行] ボタンと [キャンセル] ボタンを表示します。
アイコンの種類 vbCritical 16 警告メッセージ アイコンを表示します。
Windowsのシステムエラーの音が鳴ります。
vbQuestion 32 問い合わせメッセージ アイコンを表示します。
vbExclamation 48 注意メッセージ アイコンを表示します。
Windowsのメッセージ(警告)の音が鳴ります。
vbInformation 64 情報メッセージ アイコンを表示します。
Windowsのメッセージ(情報)の音が鳴ります。
標準ボタン vbDefaultButton1 0 第 1 ボタンを標準ボタンにします。
vbDefaultButton2 256 第 2 ボタンを標準ボタンにします。
vbDefaultButton3 512 第 3 ボタンを標準ボタンにします。
vbDefaultButton4 768 第 4 ボタンを標準ボタンにします。
その他 vbApplicationModal 0 アプリケーション モーダルに設定します。メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません。
vbSystemModal 4096 システム モーダルに設定します。メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。
vbMsgBoxHelpButton 16384 ヘルプ ボタンを追加します。
VbMsgBoxSetForeground 65536 最前面のウィンドウとして表示します。
vbMsgBoxRight 524288 テキストを右寄せで表示します。
vbMsgBoxRtlReading 1048576 テキストを、右から左の方向で表示します。

「その他」は使用する必要はないでしょう。
各グループから値を 1 つずつ選択して加算した合計値を指定します。
メッセージ内容、ボタンの種類、アイコンの種類は、組み合わせを考慮しましょう。


MsgBox関数の戻り値の定数

MsgBox関数は以下の戻り値を返します。
VbMsgBoxResult列挙のメンバーです。

定数 説明
vbOK 1 [OK]
vbCancel 2 [キャンセル]
vbAbort 3 [中止]
vbRetry 4 [再試行]
vbIgnore 5 [無視]
vbYes 6 [はい]
vbNo 7 [いいえ]


MsgBox関数の例文

promptのみ
MsgBox "出来ました。"

マクロ VBA MsgBox関数

メッセージのみ指定した場合です。
「OK」ボタンだけが表示されます。

promptを複数行
MsgBox "出来ました。" & vbLf & "よかった"

マクロ VBA MsgBox関数

ヘルプでは
複数行を指定する場合は、キャリッジ リターン (Chr(13))、ライン フィード (Chr(10))、またはキャリッジ リターンとライン フィードの組み合わせ (Chr(13) & Chr(10)) を改行する位置に挿入し、行を区切ってください。
このように書かれていますが、

キャリッジ リターン (Chr(13))は、VbCr
ライン フィード (Chr(10))は、VbLf
キャリッジ リターンとライン フィードの組み合わせ (Chr(13) & Chr(10)) は、VbCrLf
になります。

どれを使っても、MsgBoxの表示は同じですが、VbLfで良いでしょう。 

buttonsを指定
MsgBox "出来ました。", vbOKOnly, "タイトル"

マクロ VBA MsgBox関数

メッセージと、ボタンの種類と、タイトルを指定した場合です。
タイトルの出方を確認して下さい。

MsgBoxの戻り値を使用
Dim rtn As Integer
rtn = MsgBox("出来ましたか?", vbYesNo + vbQuestion + vbDefaultButton2, "確認")
Select Case rtn '押されたボタンの確認
  Case vbYes
    MsgBox "「はい」が押されました。"
  Case vbNo
    MsgBox "「いいえ」が押されました。"
End Select

マクロ VBA MsgBox関数

ボタンの種類を、「はい」「いいえ」
アイコンの種類を、問い合わせアイコン
標準ボタンを、2番目のボタン

メッセージボクスの出方を確認して下さい。

押されたボタンを、戻り値で確認しています。
戻り値を取得する為、
変数 = MsgBox(・・・)
とした場合は、引数を()括弧でくくります。
VBAにおける括弧()の使い方
・基本文型 ・VBAにおける括弧() ・VBAにおける半角空白の意味 ・戻り値を他の用途に使う時 ・括弧()の使い方の基本文型 ・Callを省略しなければ全て括弧が必要になる ・最後に一言


MsgBoxの使い道

マクロVBAの処理時間は高速かつ自動で処理を行ってくれますが、
いつ終わったのか分からない場合が多々あります。
そのような場合は、マクロVBAの一番最後にMsgBoxで「完了」を伝えておくと良いでしょう。

ユーザーにマクロVBAからメッセージを伝えるものですので適宜入れるようにしてください。
ただし、むやみにMsgBoxを使用すると、使用者がうっとおしく感じてしまう場合もありますので注意ください。




同じテーマ「マクロVBA入門」の記事

第20回.条件分岐(IF)

・Ifステートメントの構文 ・IFステートメントの条件式 ・Ifステートメントの使用例文 ・Ifステートメントのネスト(入れ子) ・サイト内のIfステートメント参考ページ ・最後に
第21回.条件分岐(ElseIf)
前回のIFステートメントでは、真か偽の二択でした。今回は、もっと多くの分岐が必要な、Ifステートメントで多肢条件分岐の場合の書き方です。ステートメントとしては、Ifステートメントです。IfステートメントのElseIfの構文 If条件式1Then 条件式1が真の処理 [ElseIf条件式2Then 条件式2が真の処理…
第22回.条件分岐(Select Case)
・Select Caseステートメントの構文 ・Select Case の例文 ・Select Case の応用
第23回.メッセージボックス(MsgBox関数)
第24回.インプットボックス(InputBox関数)
・InputBox関数の構文 ・名前付き引数 ・InputBox関数の例文
第25回.名前付き引数について
・仮引数と実引数 ・メソッドとは ・名前付き引数について ・名前付き引数の例文 ・名前付き引数の必要性
第26回.総合練習問題2
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ
第27回.ブック・シートの選択(Select,Activate)
・アクティブ ・ブックをアクティブにする ・シートの選択、シートのアクティブ ・複数シートの選択(作業グループ化) ・複数ブックを開いている時のシート選択 ・VBAでの色々なシート指定方法
第28回.セル・行・列の選択(Select,ActivateとCurrentRegion)
・選択セルとアクティブセル ・セルの選択 ・セルをアクティブにする ・行の選択、列の選択 ・セル領域の選択 ・メソッドとはプロパティとは
第29回.セル・行・列の削除・挿入(Delete,Insert)
・セルの削除 ・セルの挿入 ・セルの削除・挿入時は、Shift:=は必ず指定 ・行・列の削除・挿入 ・行・列の削除/行・列の挿入で、Shift:=は必要か ・行・列の表示・非表示
第30回.総合練習問題3
・マクロVBA練習問題 ・シンキングタイム ・マクロVBA練習問題解答へ


新着記事NEW ・・・新着記事一覧を見る

イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)
PIVOTBY関数(縦軸と横軸でグループ化して集計)|エクセル入門(2023-11-19)
GROUPBY関数(縦軸でグループ化して集計)|エクセル入門(2023-11-18)
PY関数(Pythonコードをセル内で実行)|エクセル入門(2023-11-17)
画像「セルに配置」のVBAについて(365の新機能)|VBA技術解説(2023-11-13)
スピルのゴーストの範囲を選択するVBA|ツイッター出題回答 (2023-10-31)
エクセル試験3:月間の所定労働時間|エクセル練習問題(2023-10-04)
エクセル試験2:所得税の計算|エクセル練習問題(2023-10-04)
エクセル試験1:曜日別の平均客単価|エクセル練習問題(2023-10-04)
列全体を指定する時のRangeとColumnsの違い|ツイッター出題回答 (2023-09-24)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.条件分岐(IF)|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.Range以外の指定方法(Cells,Rows,Columns)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ