VBAのMsgBoxで改行する方法|vbCrLf・変数表示・Yes/No分岐

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
MsgBoxの使い方を解説

VBAの MsgBox の使用方法で困っていませんか?
たとえば、メッセージを2行に分けたいときは、文字列の間に vbCrLf を入れます。

MsgBox "1行目" & vbCrLf & "2行目"
結論

MsgBoxで改行するなら、まず vbCrLf を使えば大丈夫です。
変数を一緒に表示したいときは & でつなぎ、確認メッセージで処理を分けたいときは vbYesNo と戻り値を使います。

Sub MsgBoxQuickSample()
    Dim count As Long
    count = 12

    MsgBox "処理件数: " & count & "件" & vbCrLf & _
           "処理が完了しました。", vbInformation, "完了"
End Sub

この記事では、VBAのMsgBoxで改行する方法、変数を表示する方法、Yes/Noで分岐する方法、ボタン・アイコン定数の使い分け、実務でよくあるミスをまとめます。

【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度
目次

VBAのMsgBoxで改行する基本コードをサクッと解説

MsgBoxで複数行のメッセージを表示したい場合は、文字列と文字列の間に vbCrLf を入れます。
使用頻度は多いため、覚えておきましょう。

Sub ShowMessageWithLineBreak()
    MsgBox "1行目" & vbCrLf & "2行目"
End Sub

実行すると、メッセージボックス内で「1行目」と「2行目」が別の行に表示されます。

改行してMsgBoxを表示

vbCrLfで2行・3行に分けて表示する

3行以上にしたい場合も、同じように vbCrLf をつなげます。

Sub ShowThreeLineMessage()
    MsgBox "確認してください。" & vbCrLf & _
           "A列に空白があります。" & vbCrLf & _
           "修正後にもう一度実行してください。"
End Sub

VBAでは長い1行を読みやすくするために、半角スペースと _ を使ってコードの記載を折り返せます。
vbCrLf は表示結果の改行、_ はコード上の折り返しです。この2つは役割が違います。

スクロールできます
書き方何をするものかMsgBoxでのおすすめ
vbCrLf改行を入れる定数Windows版Excelでは基本これでOK
vbNewLine実行環境に合わせた改行定数Windows以外も意識するなら候補
Chr(10)LFだけを入れるMsgBoxでは基本的に優先しなくてよい
Chr(13) & Chr(10)CRとLFを直接書くvbCrLf のほうが読みやすい

Microsoft Learnでは、複数行のメッセージは Chr(13)Chr(10)、またはその組み合わせで区切れると説明されています。
VBA側には vbCrLf という定数が用意されているため、通常は数値や Chr を直接書かずに vbCrLf を使うほうが読みやすいです。

スポンサーリンク

変数と文字列を一緒に表示する

MsgBoxに変数を表示するときは、文字列と変数を & でつなぎます。

Sub ShowVariableMessage()
    Dim userName As String
    Dim count As Long

    userName = "田中"
    count = 12

    MsgBox userName & "さん" & vbCrLf & _
           "処理件数は " & count & " 件です。"
End Sub

この例では、1行目に名前、2行目に処理件数を表示します。
数値の変数も & でつなげますが、単位や説明文を一緒に入れると、後から見たときに意味が分かりやすくなります。

変数と文字列を一緒に表示

よくある失敗は、文字列の外に説明を書いてしまうことです。

'// エラーになりやすい例
' MsgBox 処理件数は & count & 件です

'// 正しい例
MsgBox "処理件数は " & count & " 件です。"

日本語の説明文は " " で囲み、変数は囲まずに & でつなぎましょう。

MsgBoxの基本構文と設定方法

MsgBoxは、次の5つの引数で設定します。初心者が最初に覚えるべきなのは promptbuttonstitle の3つです。 helpfilecontext は古いヘルプ機能と組み合わせる引数なので、通常のExcel VBAでは「存在だけ知っておく」くらいで問題ありません。

実際のメッセージボックスでは、prompt が本文、buttons がボタンやアイコン、title がタイトルバーに対応します。 下の図のように、コードの引数と画面の場所を結びつけて覚えると迷いにくいです。

MsgBoxの基本構文
MsgBoxの基本構文
MsgBoxの設定方法
MsgBoxの設定方法
スクロールできます
引数必須/省略指定する内容初心者向けの覚え方
prompt必須表示する本文メッセージ画面中央に出る文章
buttons省略可能ボタン、アイコン、既定ボタンOK/Yes/Noやアイコンの設定
title省略可能タイトルバーの文字画面上部の見出し
helpfile省略可能ヘルプファイルのパス通常は使わない
context省略可能ヘルプ内のトピック番号helpfile とセットで使う

prompt(必須)の設定方法

prompt は、MsgBoxに表示する本文です。文字列を表示する場合は " " で囲みます。

Sub ShowSimplePrompt()
    MsgBox "これはシンプルなメッセージです。"
End Sub

このコードを実行すると、本文に「これはシンプルなメッセージです。」と表示されます。

複数の変数や文字列を組み合わせたい場合は、& でつなぎます。

Sub ShowConcatenatedPrompt()
    Dim part1 As String
    Dim part2 As String

    part1 = "こんにちは、"
    part2 = "MsgBoxのテストです。"

    MsgBox part1 & part2
End Sub

改行を入れる場合は、前の章で紹介した vbCrLf を本文の途中につなげます。

Sub ShowPromptWithLineBreak()
    MsgBox "行1" & vbCrLf & "行2" & vbCrLf & "行3"
End Sub

prompt は長い文章も書けますが、業務用の確認メッセージでは「何をするか」「利用者に何をしてほしいか」を短く書くほうが伝わります。

スクロールできます
目的書き方表示される内容
固定文を出すMsgBox "処理が完了しました。"処理が完了しました。
変数を出すMsgBox "件数: " & count & "件"変数の値を含むメッセージ
改行して出すMsgBox "1行目" & vbCrLf & "2行目"2行のメッセージ

buttons(省略可能)の種類とアイコン一覧

MsgBoxはメッセージを表示するだけでなく、OK、キャンセル、はい、いいえなどのボタンを表示できます。ボタンの結果を受け取ると、ユーザーの選択に応じて処理を分けられます。

buttons では、主に次の3種類を組み合わせます。

buttonsの設定方法について
buttonsの設定方法について
スクロールできます
種類何を決めるか
選択ボタンOK、キャンセル、はい、いいえなどvbOKOnlyvbYesNo
アイコン情報、質問、注意、重大な警告などvbInformationvbQuestion
既定ボタンEnterキーで選ばれる初期ボタンvbDefaultButton1vbDefaultButton2

たとえば、Yes/Noボタン、質問アイコン、タイトルを付ける場合は次のように書きます。

Sub ShowButtonsSample()
    MsgBox "処理を続けますか?", vbYesNo + vbQuestion, "確認"
End Sub

選択ボタンの種類

スクロールできます
定数表示されるボタン説明
vbOKOnlyvbOKOnly0OKボタンだけを表示
vbOKCancelvbOKCancel1OKとキャンセルを表示
vbAbortRetryIgnorevbAbortRetryIgnore2中止、再試行、無視を表示
vbYesNoCancelvbYesNoCancel3はい、いいえ、キャンセルを表示
vbYesNovbYesNo4はい、いいえを表示
vbRetryCancelvbRetryCancel5再試行、キャンセルを表示

アイコンの種類

スクロールできます
定数アイコン使いどころ
vbCriticalvbCritical16重大なエラーや中断が必要な警告
vbQuestionvbQuestion32Yes/Noなどの確認
vbExclamationvbExclamation48入力漏れや注意喚起
vbInformationvbInformation64完了通知や案内

既定ボタンの種類

スクロールできます
定数内容
vbDefaultButton101番目のボタンを既定にする
vbDefaultButton22562番目のボタンを既定にする
vbDefaultButton35123番目のボタンを既定にする
vbDefaultButton47684番目のボタンを既定にする

削除や上書きのように戻しにくい処理では、vbDefaultButton2vbDefaultButton3 を使い、Enterキーだけでうっかり実行されないようにすると安全です。

戻り値もよく使うものだけ先に覚えれば大丈夫です。Yes/NoやOK/Cancelの結果を受け取ると、ユーザーの選択に応じて処理を分けられます。

スクロールできます
戻り値意味よく使う場面
vbOKOKが押されたOK/Cancelの確認
vbCancelキャンセルが押された中止処理
vbYesはいが押された実行する
vbNoいいえが押された実行しない

Microsoft Learnでは、ボタン種別、アイコン、既定ボタン、モーダル指定はそれぞれ別グループから1つずつ選んで組み合わせると説明されています。たとえば、ボタンを2種類同時に vbOKCancel + vbYesNo のように混ぜる必要はありません。

title・helpfile・contextの設定方法

title は、メッセージボックスのタイトルバーに表示する文字列です。省略すると、Excelではアプリケーション名が表示されます。

titleの設定方法について
titleの設定方法について
Sub ShowMessageWithTitle()
    MsgBox "処理が完了しました。", vbInformation, "完了"
End Sub

実務では「完了」「確認」「エラー」「入力チェック」など、何のメッセージか分かるタイトルを付けると親切です。

helpfile は、MsgBoxに関連付けるヘルプファイルを指定する引数です。
context は、そのヘルプファイル内の特定トピック番号を指定する引数です。

Sub HelpFileExample()
    MsgBox "詳細はヘルプをご覧ください。", _
           vbOKOnly, _
           "ヘルプメッセージ", _
           "C:\Path\To\HelpFile.chm", _
           1
End Sub

もう1つ、context の値を変えると、ヘルプファイル内の別トピックへジャンプさせる想定になります。

Sub ContextExample()
    MsgBox "詳細はヘルプをご覧ください。", _
           vbOKOnly, _
           "ヘルプメッセージ", _
           "C:\Path\To\HelpFile.chm", _
           100
End Sub

ただし、現在のExcel VBA実務では helpfilecontext を使う場面はかなり少ないです。ヘルプファイルが正しく配置されていないと機能しないため、初心者は promptbuttonstitle を優先して覚えてください。

最終行やCellsを手元で確認しながら学びたい方へ

Yes/No分岐と実務で使うMsgBoxの応用例

MsgBoxは「処理完了を知らせる」だけでなく、削除前の確認、入力漏れの警告、処理件数の表示にも使えます。
ただし、何でもMsgBoxにすると作業が止まりすぎるため、重要な場面に絞って使うのが実務向きです。

Yes/Noで処理を分岐して削除・クリア前に確認する

セルの値を消す前に確認を出す例です。vba_clear 記事のようなクリア処理と組み合わせると、誤操作を減らせます。

Sub ConfirmBeforeClear()
    Dim answer As VbMsgBoxResult

    answer = MsgBox("入力欄の値をクリアします。" & vbCrLf & _
                    "よろしいですか?", _
                    vbYesNo + vbExclamation + vbDefaultButton2, _
                    "クリア確認")

    If answer = vbYes Then
        Worksheets("Sheet1").Range("B2:F7").ClearContents
        MsgBox "入力欄をクリアしました。", vbInformation, "完了"
    Else
        MsgBox "クリアを中止しました。", vbInformation, "中止"
    End If
End Sub
MsgBoxで条件分岐を行った結果
MsgBoxで条件分岐を行った結果

ポイントは、確認文に「何をするか」を具体的に書くことです。
「実行しますか?」だけだと、読者も利用者も何が起きるのか判断しにくくなります。

スクロールできます
悪い例良い例
実行しますか?入力欄の値をクリアします。よろしいですか?
削除しますか?選択した行を削除します。元に戻せない場合があります。よろしいですか?
エラーですA列に空白があります。修正後にもう一度実行してください。

処理件数やエラー内容を変数で表示する

処理結果を表示するときは、件数や対象シート名を変数で入れると分かりやすくなります。

Sub ShowResultSummary()
    Dim sheetName As String
    Dim processedCount As Long

    sheetName = "売上一覧"
    processedCount = 125

    MsgBox "対象シート: " & sheetName & vbCrLf & _
           "処理件数: " & processedCount & "件" & vbCrLf & _
           "集計が完了しました。", _
           vbInformation, _
           "処理結果"
End Sub

デバッグ目的で一時的に確認したいだけなら Debug.Print のほうが向く場合もあります。 ユーザーに見せる必要がある情報は MsgBox、開発者だけが確認する途中経過は Debug.Print、という使い分けにすると作業が止まりにくくなります。

MsgBoxを使いすぎない判断基準

MsgBoxは表示された時点で処理が止まり、ユーザーがボタンを押すまで次へ進みません。確認が必要な場面では便利ですが、繰り返し処理の中で何度も表示すると、かえって作業効率が落ちます。

スクロールできます
場面MsgBoxを使うか理由
削除・上書き前の確認使う誤操作を防ぐ価値が高い
処理完了の通知使ってよいユーザーが完了を知りたい場合に有効
入力漏れの警告使う修正すべき内容を伝えられる
100行のループ中に毎回表示避ける何度も止まって作業にならない
開発中の変数確認場合による本番コードでは Debug.Print も検討
この作業をAIに頼むなら

MsgBoxの文章は、処理内容に合わせて具体化すると使いやすくなります。
AIに頼む場合は、次のように「どの処理の前後に出すか」まで指定すると、業務に合う確認文とコードを作りやすいです。

MsgBoxの文章は、処理内容に合わせて具体化すると使いやすくなります。AIに頼む場合は、次のように「どの処理の前後に出すか」まで指定すると、業務に合う確認文とコードを作りやすいです。

次のVBAコードに、確認用のMsgBoxを追加してください。
目的は「実行前にユーザーへ処理内容を伝え、Yesなら実行、Noなら中止すること」です。
確認文には、対象シート名、対象範囲、実行すると何が変わるかを入れてください。
初心者にも分かるように、変更点と注意点も説明してください。

MsgBoxのよくあるミス・FAQとまとめ

最後に、MsgBoxでつまずきやすいポイントを整理します。
改行、変数、Yes/No分岐の3つを押さえると、実務ではかなり使い回せます。

よくあるミスをご紹介

スクロールできます
ミス原因直し方
改行されないvbCrLf を文字列の外でつないでいない"1行目" & vbCrLf & "2行目" と書く
変数名がそのまま表示される変数を " " で囲んでいる変数は囲まず & count & のようにつなぐ
Yes/Noの結果で分岐できないMsgBoxの戻り値を受け取っていないanswer = MsgBox(...) のように変数へ入れる
キャンセル時も処理されるvbCancel の条件を見ていないvbYesNoCancel を使うならCancelも分ける
コードが横に長すぎる1行に全部書いている _ でコードを折り返す

よくある質問

MsgBoxで改行するには何を使えばいいですか?

基本は vbCrLf を使います。
例は MsgBox "1行目" & vbCrLf & "2行目" です。

改行についてをもう一度見る

vbCrLfvbNewLine はどちらを使えばいいですか?

Windows版ExcelのVBAでは vbCrLf を基本にして問題ありません。
環境ごとの改行を意識するなら vbNewLine も候補です。

改行についてをもう一度見る

MsgBoxで変数と文字列を一緒に表示するには?

& でつなぎます。例は MsgBox "件数: " & count & "件" です。

変数と一緒に表示するをもう一度見る

Yes/Noの結果を取得するには?

Dim answer As VbMsgBoxResult で変数を用意し、answer = MsgBox("続けますか?", vbYesNo) のように戻り値を受け取ります。

MsgBoxの結果を取得するをもう一度見る

MsgBoxで3つの選択肢を出せますか?

vbYesNoCancel を使うと「はい」「いいえ」「キャンセル」を表示できます。
戻り値は vbYesvbNovbCancel で分けます。

ボタンの選択についてをもう一度見る

MsgBoxInputBox の違いは何ですか?

MsgBox はメッセージ表示とボタン選択が中心です。
文字を入力してもらう場合は InputBox を使います。

Access VBAでも同じように使えますか?

MsgBox の基本構文や vbCrLfvbYesNo などの考え方はVBA共通です。
ただし、この記事の実務コードはExcelのシート操作を前提にしているため、Accessでは対象オブジェクトの部分を置き換えてください。

まとめ

実務では、削除・クリア・上書きの前に確認メッセージを入れると安全です。
一方で、ループ中に何度もMsgBoxを出すと作業が止まりすぎるため、完了通知や重要確認に絞って使いましょう。

自宅でじっくり学びたい方へ

MsgBoxの使い方が分かったら、次は変数・条件分岐・セル操作を順番に整理しておくと、 実務でVBAを使うときに迷いにくくなります。

VBA入門ロードマップと習得時間の目安を見る

※リンク先の記事には、Udemy講座などの広告リンクが含まれます。

VBA入門ロードマップをスマホで開くQRコード

あとでスマホで
読む

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「共通」を見る 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」...
スポンサーリンク
参考公式リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次