Excel VBA MsgBox関数の使い方

-AvA-
MsgBox関数では、メッセージボックスに自由なメッセージを表示させることができます。また、 最大3つの選択肢の中からユーザーに1つを選択させ、それに応じて以降の処理の内容を決めること が可能です。

MsgBox関数の書式

Promptのみ必須記述項目です。
Buttonsを省略した場合、「OK」になります。
titleを省略した場合、「Microsoft Excel」になります。
MsgBox “勉強しましょうか?”, vbYesNo, “マクロ講座”
MsgBox “こんなん出ました!!”

引数Buttonsに指定可能な定数

引数Buttonsに指定可能な定数は5つのグループからなり、第1~4グループについてはグループ内から1つずつ、 第5グループについては必要に応じた定数を合算して指定することが可能です。
第1グループ ・・・ ボタンの種類と個数(グループ内で1つ指定可能)
第2グループ ・・・ アイコンの種類(グループ内で1つ指定可能)
第3グループ ・・・ 標準ボタン(グループ内で1つ指定可能)
第4グループ ・・・ メッセージボックスがモーダルか(グループ内で1つ指定可能)
第5グループ ・・・ その他(すべて指定可能)
MsgBox関数の使用方法 – Excel VBA

第1グループ : ボタンの種類と個数

vbOKOnly
MsgBox “こんなん出ました!!”, vbOKOnly
vbOKCancel
MsgBox “こんなん出ました!!”, vbOKCancel
vbAbortRetryIgnore
MsgBox “こんなん出ました!!”, vbAbortRetryIgnore
vbYesNoCancel
MsgBox “こんなん出ました!!”, vbYesNoCancel
vbYesNo
MsgBox “こんなん出ました!!”, vbYesNo
vbRetryCancel
MsgBox “こんなん出ました!!”, vbRetryCancel

第2グループ : アイコンの種類

MsgBox関数では、定数で定義されているアイコン以外のものを表示することはできません。また、表示する文字列の大きさや文字色を指定することもできません。そうした独自のメッセージボックスを表示したいときは、UserFormを使用してください。
MsgBox関数の使い方(2) – ユーザーが選択したボタンの処理:Excel VBA|即効テクニック|Excel VBAを学ぶならmoug

vbCritical
警告メッセージアイコンを表示します。

MsgBox “こんなん出ました!!”, vbCritical

vbQuestion
問い合わせメッセージアイコンを表示します。

MsgBox “こんなん出ました!!”, vbQuestion

vbExclamation
注意メッセージアイコンを表示します。

MsgBox “こんなん出ました!!”, vbExclamation

vbInformation
情報メッセージアイコンを表示します。

MsgBox “こんなん出ました!!”, vbInformation

どの種類のボタンが表示するかを示す定数と加算して「MsgBox」関数を呼び出す時の2番目の引数に指定します。

MsgBox “インストールを継続しますか?” , vbAbortRetryIgnore + vbQuestion, “テスト”

第3グループ : 標準ボタン(デフォルトボタン)の設定

vbDefaultButton1 – 左から1番目のボタンをデフォルト(そのままSpaceキーを押すとその動作にすること)にします。
MsgBox: VBAでExcelを操作しよう

vbDefaultButton1
MsgBox “こんなん出ました!!”, vbYesNoCancel + vbDefaultButton1 + vbMsgBoxHelpButton
vbDefaultButton2
MsgBox “こんなん出ました!!”, vbYesNoCancel + vbDefaultButton2 + vbMsgBoxHelpButton
vbDefaultButton3
MsgBox “こんなん出ました!!”, vbYesNoCancel + vbDefaultButton3 + vbMsgBoxHelpButton
vbDefaultButton4
MsgBox “こんなん出ました!!”, vbYesNoCancel + vbDefaultButton4 + vbMsgBoxHelpButton

第4グループ : メッセージボックスの状態設定

vbApplicationModal(0) – アプリケーション モーダルに設定します。メッセージ ボックスに応答するまで、現在選択中のアプリケーションの実行を継続できません。
MsgBox を使用する – アプリケーションとしてのVBA

vbSystemModal(4096) – システム モーダルに設定します。メッセージ ボックスに応答するまで、すべてのアプリケーションが中断されます。
MsgBox を使用する – アプリケーションとしてのVBA

第5グループ : その他

vbMsgBoxHelpButton(16384) – ヘルプ ボタンを追加します。
MsgBox を使用する – アプリケーションとしてのVBA

VbMsgBoxSetForeground(65536) – 最前面のウィンドウとして表示します。
MsgBox を使用する – アプリケーションとしてのVBA

vbMsgBoxRight(524288) – テキストを右寄せで表示します。
MsgBox を使用する – アプリケーションとしてのVBA

vbMsgBoxRtlReading(1048576) – テキストを、右から左の方向で表示します。

MsgBox関数で( )を使う時と使わない時

MsgBox関数は、ユーザーが「どのボタンを押したか」という結果を返します。
Office TANAKA – 今さら聞けないVBA「括弧はどんなときに使うの?」

VBAの大原則に、関数を呼び出すとき「戻り値を取得するときはカッコをつけ、戻り値を取得しないときにはカッコをつけない」というのがあります。
エクセルExcel大事典 VBAマクロ応用講座 引数 参照 MsgBox カッコ 括弧 かっこ ByVal ByRef

MsgBox “test”  … 正
MsgBox (“test”) … 誤

どちらもコンパイルエラーにならずに「test」を表示しますが、VBAの文法として正しいのは上の表記です。
エクセルExcel大事典 VBAマクロ応用講座 引数 参照 MsgBox カッコ 括弧 かっこ ByVal ByRef

Re = MsgBox(“OKですか?”, vbYesNo)
は、ユーザーがどのボタンを押したかという返り値を、変数Reに格納しています。MsgBoxの返り値を使っていますから、引数は括弧で囲まなければなりません。
Office TANAKA – 今さら聞けないVBA「括弧はどんなときに使うの?」

MsgBox “それはよかった”, vbInformation
は、ユーザーがどのボタンを押したかという返り値を使っていません。ただユーザーにメッセージを表示しただけです。つまり、返り値を使っていませんから、引数を括弧で囲ってはいけません。
Office TANAKA – 今さら聞けないVBA「括弧はどんなときに使うの?」

VbMsgBoxResultで選択されたボタンを判定する

MsgBox関数には戻り値があり、「メッセージボックス上でユーザーが押したボタン」返します。

この戻り値を変数に格納し、判定することで、ユーザーが押したボタンに応じた処理ができます。

マクロ初心者のうちは、MsgBox関数の戻り値を代入する変数はIntegerやLongで十分だと思います。
ですが、オブジェクトブラウザーで調べるとわかるとおり、そもそもMsgBox関数はVbMsgBoxResult列挙に定義されている値を返すように作られているのです。
戻り値の型をVbMsgBoxResultで宣言しておけば、コーディング時に、下図のような自動メンバー表示が行われ、コーディングも楽になります。

メッセージを改行する時は「vbNewLine」

改行に使うコードは数種あります。
その中で「vbNewLine」は、現在のプラットフォームに最適ないずれかを使用するというきわめて柔軟性のある定数です。
質問が長くて読みにくいですね。
長いメッセージは、適当な箇所で改行しましょう。
改行すれば、見やすくなります。

VbMsgBoxStyleを使った書き方

Dim style As VbMsgBoxStyle

style = 0
style = style Or vbYesNo
style = style Or vbMsgBoxHelpButton
style = style Or vbDefaultButton2
style = style Or vbCritical
style = style Or vbMsgBoxSetForeground

ret = MsgBox(“abc”, style)

https://matome.naver.jp/odai/2146076902031273401
2016年04月17日