Excel VBA | 超初心者(Excel操作+マクロ体験):基本文法 - MsgBox

Excel VBA VBA
スポンサーリンク

MsgBox は「VBAが人間に話しかけるための吹き出し」

MsgBox は、「メッセージボックス(小さなダイアログ)」を表示するための命令です。
VBAが「ちょっと一言伝えたい」「確認したい」「結果を見せたい」ときに使う“吹き出し”だと思ってください。

超初心者のうちは、
「処理の途中経過を表示して動きを確認する」
「最後に結果をポンと見せる」
この2つができれば十分です。


一番シンプルな MsgBox:文字を表示するだけ

基本形

いちばん基本の形はこれです。

MsgBox "こんにちは"
VB

Sub の中で使うと、実行したときに小さなウィンドウが出て「こんにちは」と表示され、「OK」ボタンが1つだけ出ます。

Sub SampleMsgBoxBasic()

    MsgBox "こんにちは、VBAの世界へようこそ"

End Sub
VB

これが MsgBox の最小形です。
まずは「文字列を表示する命令」として体に馴染ませてください。

変数の中身を表示して動きを確認する

デバッグ(動きの確認)で一番よく使うのがこれです。

Sub SampleMsgBoxVar()

    Dim total As Long

    total = 10 + 20

    MsgBox "合計は " & total & " です。"

End Sub
VB

ここでは、"合計は "total" です。"& でつないで、1つの文字列にしています。
MsgBox は「文字列」を1つ受け取るので、数字を表示したいときはこうやって文字列に混ぜます。

「今この変数に何が入っているのか?」を確認したくなったら、とりあえず MsgBox で出してみる――これは初心者の強い味方です。


改行を入れて、複数行のメッセージを表示する

vbCrLf で改行する

1行だと読みにくいときは、改行を入れます。
VBAでは、改行に vbCrLf を使うのが定番です。

Sub SampleMsgBoxMultiLine()

    Dim name As String
    Dim score As Long

    name = "山田"
    score = 85

    MsgBox "名前: " & name & vbCrLf & _
           "点数: " & score & vbCrLf & _
           "おつかれさまでした。"

End Sub
VB

vbCrLf が「ここで改行して」という意味です。
& _ は「行を見やすく分けるための継続記号」なので、1行で書いても構いません。

メッセージを丁寧に見せたいときは、
「1行に1情報」を意識して、vbCrLf で区切ると読みやすくなります。


MsgBox の戻り値を使って「ユーザーの選択」を受け取る

ここからが少しレベルアップですが、MsgBox は「表示するだけ」ではなく、「どのボタンが押されたか」を返してくれる関数でもあります。

Yes/No で確認する MsgBox

「本当に削除していいですか?」のような確認をしたいときの典型パターンです。

Sub SampleMsgBoxYesNo()

    Dim ans As VbMsgBoxResult

    ans = MsgBox("本当に削除しますか?", vbYesNo + vbQuestion, "確認")

    If ans = vbYes Then
        MsgBox "削除します。"
    Else
        MsgBox "キャンセルしました。"
    End If

End Sub
VB

ここで出てきたポイントを整理します。

第1引数:表示するメッセージ
第2引数:ボタンの種類やアイコン(ここでは vbYesNo + vbQuestion
第3引数:タイトルバーに表示する文字列(ここでは “確認”)

MsgBox(...) の結果は、押されたボタンに応じて vbYesvbNo などの値になります。
それを ans に受け取って、If 文で分岐しています。

超初心者のうちは、
「Yes/No で分岐できるんだな」
くらいを掴んでおけば十分です。


第2引数(ボタンやアイコン指定)のイメージ

よく使う組み合わせ

細かい一覧を全部覚える必要はありません。
まずはこの2つだけで十分です。

MsgBox "メッセージ", vbOKOnly, "タイトル"        ' OKボタンだけ(省略時のデフォルト)

MsgBox "本当に実行しますか?", vbYesNo + vbQuestion, "確認"   ' Yes/No+?アイコン
VB

vbYesNo が「Yes と No の2つのボタン」、
vbQuestion が「?のアイコン」です。
+ で足し合わせて指定します。

他にも vbExclamation(!マーク)、vbCritical(×マーク)などがありますが、
「確認は Yes/No+?アイコン」だけ覚えておけば、実務ではかなり戦えます。


MsgBox を使うときに意識してほしい重要ポイント

「とりあえず MsgBox で中身を見る」癖をつける

コードを書いていて、

「この時点で、この変数には何が入っているんだろう?」
「この For の中、何回回ってるんだろう?」

と気になったら、遠慮なく MsgBox を差し込んでください。

MsgBox "i = " & i
VB

これだけで、頭の中のモヤモヤが一気に晴れます。
デバッグの最初の一歩は、難しいツールではなく「MsgBox で覗いてみる」で十分です。

本番用のコードでは「出しすぎない」

学習中は MsgBox を多用してOKですが、
実務で使うマクロでは、MsgBox が多すぎるとユーザーがうんざりします。

  • 本当に確認したいところだけ Yes/No
  • 結果を一言伝えるところだけ OK

というふうに、「ここぞ」という場所に絞ると、気持ちのいいマクロになります。


まとめ:MsgBox は「VBAと人間をつなぐ、いちばん手軽な窓口」

MsgBox の本質は、

「VBAが人間に何かを伝えたり、
 人間の選択を受け取ったりするための、小さな窓」

です。

押さえておきたいポイントをコンパクトにまとめると、

文字列を表示するだけなら MsgBox "メッセージ"
変数の中身を確認するときは "文字列" & 変数 をつないで表示
vbCrLf で改行して、複数行メッセージも書ける
ans = MsgBox(..., vbYesNo, ...) の形で、Yes/No の結果を受け取って分岐できる

タイトルとURLをコピーしました