メッセージボックス MsgBox実際の使い方を最速に理解

vbamsgboxeyecatch

メッセージボックス MsgBoxの使い方を最速理解で説明します。

気軽に使えるUIです。メッセージ表示と利用者の応答を求める2つのタイプがあります。

こんにちは、じゅんぱ店長(@junpa33)です。

エクセルVBAでユーザーフォームを使わなくても、簡単なユーザーとのやり取りならメッセージボックスでも可能です。

今回は、この「ユーザーへのメッセージや選択肢を提示する」ユーザーフォームについての説明をします。

メッセージボックス MsgBoxの使い方

vbamsgboxp015

メッセージボックスはVBAプログラムを処理した結果を「情報としてユーザーに知らせる」ウインドウであり、

また、これから進めるプログラムの進行をどうするか「ユーザーに判断してもらう」という関数になっています。

「情報をユーザーに知らせる」という意味では、ユーザーは「はいそうですか。」となりますが、

「ユーザーに判断してもらう」という事では、ユーザーは「わかりました」、「嫌です」、「やめます。」などの返答が出来るということになります。

また、裏技的な考え方にもなりますが、メッセージボックスが表示されている間は、

VBAコードの進行が一時停止しています。

何らかのボタンが押されることで再開するわけですが、”ポーズスイッチ”的に利用することも出来ます。

(もっとも、そのメッセージボックスが動いているエクセルBOOKは再開されるまでは操作不能になりますが)

「情報をユーザーに知らせる」ための MsgBoxの使い方

シンプルデザインな表示方法

この使い方でのメッセージボックス MsgBoxのサンプルコードはこのようになります。

VBA
Sub メッセージボックスA01()
    MsgBox "ありがとうございました。"
End Sub
vbamsgbox001

超簡単に出来てしまいました。実用的にはこれで何も問題ないと思います。

チェック

表示を見てみると、

タイトルは「Microsoft Excel」、設置ボタンは「OK」が無指示で付加されています。

注意をひくデザインな表示方法

アイコンを付ける

警告メッセージマーク(vbCritical)
VBA
Sub メッセージボックスA02()
    MsgBox "ありがとうございました。", vbCritical
End Sub
vbamsgbox002
問合せメッセージマーク(vbQuestion)
VBA
Sub メッセージボックスA03()
    MsgBox "ありがとうございました。", vbQuestion
End Sub
vbamsgbox003
注意メッセージマーク(vbExclamation)
VBA
Sub メッセージボックスA04()
    MsgBox "ありがとうございました。", vbExclamation
End Sub
vbamsgbox004
情報メッセージマーク(vbInformation)
VBA
Sub メッセージボックスA05()
    MsgBox "ありがとうございました。", vbInformation
End Sub
vbamsgbox005

タイトルをつけて何のメッセージかをハッキリさせる

タイトルを付ければ、より何のメッセージか分かり易くなります。

タイトルをつける
VBA
Sub メッセージボックスA06()
    MsgBox "ありがとうございました。", vbInformation, "入力完了です"
End Sub
vbamsgbox006

「ユーザーに判断してもらう」ためのMsgBoxの使い方

「ユーザーに判断を委ねる」メッセージボックスですので、ユーザーが返答するボタンも何種類かあります。

メッセージボックスに表示できるボタンは、予め組み合わせが決まっていいます。

ユーザーから回答を得るので、その「回答」を変数化し値として取得します。

今回は回答を「変数 MBtn 」としています。「=」でMsgBox関数式とつなぎます。

メッセージが文章的に長くなる場合は途中で「& vbCrLf &」を挟むと、その場所で改行されます。

アイコンも表示する場合は、「ボタン定数+アイコン定数」とします。

基本の表示スタイル

「OKボタン」1つ

「OKボタン」1つのみの表示・・・「vbOKOnly」

VBA
Sub メッセージボックスB01()
    Dim MBtn As Long
        MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
            "データ入力しますか?", vbOKOnly, "入力問合せ")
End Sub
vbamsgbox007

アイコンも表示する場合は、「vbOKOnly + vbExclamation」「ボタン定数アイコン定数」とします。

VBA
Sub メッセージボックスB02()
    Dim MBtn As Long
        MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
            "データ入力しますか?", vbOKOnly + vbExclamation, _
            "入力問合せ")
End Sub
vbamsgbox008
「OK」と「キャンセル」ボタン

「OK」と「キャンセル」ボタンの表示・・・「vbOKCancel」

VBA
Sub メッセージボックスB03()
    Dim MBtn As Long
        MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
            "データ入力しますか?", vbOKCancel + vbExclamation, _
            "入力問合せ")
End Sub
vbamsgbox009
「中止」「再試行」「無視」ボタン

「中止」「再試行」「無視」ボタンの表示・・・「vbAbortRetryIgnore」

VBA
Sub メッセージボックスB04()
    Dim MBtn As Long
        MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
            "データ入力しますか?", _
            vbAbortRetryIgnore + vbExclamation, "入力問合せ")
End Sub
vbamsgbox010
「はい」「いいえ」「キャンセル」ボタン

「はい」「いいえ」「キャンセル」ボタンの表示・・・「vbYesNoCancel」

VBA
Sub メッセージボックスB05()
    Dim MBtn As Long
        MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
            "データ入力しますか?", _
            vbYesNoCancel + vbExclamation, "入力問合せ")
End Sub
vbamsgbox011
「はい」「いいえ」ボタン

「はい」「いいえ」ボタンの表示・・・「vbYesNo」

VBA
Sub メッセージボックスB06()
    Dim MBtn As Long
        MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
            "データ入力しますか?", _
            vbYesNo + vbExclamation, "入力問合せ")
End Sub
vbamsgbox012
「再試行」「キャンセル」ボタン

「再試行」「キャンセル」ボタンの表示・・・「vbRetryCancel」

VBA
Sub メッセージボックスB07()
    Dim MBtn As Long
        MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
            "データ入力しますか?", _
            vbRetryCancel + vbExclamation, "入力問合せ")
End Sub
vbamsgbox013

ユーザーの回答をコードの実行に反映する方法

クリックするボタンには、戻り値として組み込み定数が割り当てられています。

例えば「OK」をクリックしたとき戻り値として「vbOK」が返されます。

ボタン組み込み定数
OKvbOK1
キャンセルvbCancel2
中止vbAbort3
再試行vbRetry4
無視vbIgnore5
はいvbYes6
いいえvbNo7

If条件文を使って、押されるボタン別に条件分岐を組み上げます。

「はい」ボタンでセルB2に ”はい” を入力。「いいえ」ボタンでセルB4に “いいえ” を入力。「キャンセル」ボタンでプロシージャーを抜けます。

参考記事

  • If条件文についてはこちらの記事も参考になります。ここに内容
vbaifjyokeneyecatch If条件文のVBAコードの組み方。条件の絞り方を最速理解
VBA
Sub メッセージボックスB08()
    Dim MBtn As Long
        MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
            "データ入力しますか?", _
            vbYesNoCancel + vbExclamation, "入力問合せ")
        If MBtn = vbYes Then
            Range("B2").Value = "はい"
        ElseIf MBtn = vbNo Then
            Range("B4").Value = "いいえ"
        ElseIf MBtn = vbCancel Then
            Exit Sub
        End If
End Sub
vbamsgbox014

メッセージボックス MsgBox実際の使い方 まとめ

vbamsgboxp016

メッセージボックスの2つの使い方で、より使いやすいVBAプログラムを作成出来るようになります。

それ程難しくなくVBAコードに導入できたのではないでしょうか。

UIという事ではユーザーフォームという手法がメインではありますが、

このメッセージボックスとインプットボックスでも、その代用が利く場面も多くあります。

ぜひ活用をしてください。

「メッセージボックス」はエクセルVBAの対話型コード作成で、一番基本的な部分です。

コード組み立て作業中の演算結果の表示窓として使ったりもします。

これからエクセルVBAコードを自分で作っていこうとしている人であれば、

必ず使いこなせるようにしておきましょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min