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

vbamsgboxeyecatch

メッセージボックス MsgBoxの使い方を、簡単に分かり易く最速で理解いただけるように解説します。

簡易型のユーザーインターフェイスですので、ちょこちょこっといろんな場面で利用してはどうでしょうか。

 

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

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

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

 

関数リファレンスの記事一覧を開く

 

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

 

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

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

 

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

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

 

 

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

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

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

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

「情報をユーザーに知らせる」ためのメッセージボックス MsgBoxの使い方

 

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

 

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

メッセージボックスA01コード

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

vbamsgbox001

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

チェック
表示を見てみると、

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

 

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

アイコンを付ける

警告メッセージマーク(vbCritical)
メッセージボックスA02コード

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

vbamsgbox002

問合せメッセージマーク(vbQuestion)
メッセージボックスA03コード

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

vbamsgbox003

注意メッセージマーク(vbExclamation)
メッセージボックスA04コード

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

vbamsgbox004

情報メッセージマーク(vbInformation)
メッセージボックスA05コード

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

vbamsgbox005

 

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

 

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

メッセージボックスA06コード

Sub メッセージボックスA06()
    MsgBox "ありがとうございました。", vbInformation, "入力完了です"
End Sub

vbamsgbox006

 

 

「ユーザーに判断してもらう」ためのメッセージボックス MsgBoxの使い方

 

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

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

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

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

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

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

 

基本の表示スタイル

 

「OKボタン」1つ

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

メッセージボックスB01コード

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

vbamsgbox007

 

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

メッセージボックスB02コード

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

vbamsgbox008

 

「OK」と「キャンセル」ボタン

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

メッセージボックスB03コード

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

vbamsgbox009

 

「中止」「再試行」「無視」ボタン

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

メッセージボックスB04コード

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

vbamsgbox010

 

「はい」「いいえ」「キャンセル」ボタン

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

メッセージボックスB05コード

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

vbamsgbox011

 

「はい」「いいえ」ボタン

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

メッセージボックスB06コード

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

vbamsgbox012

 

「再試行」「キャンセル」ボタン

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

メッセージボックスB07コード

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

vbamsgbox013

 

 

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

 

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

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

ボタン 組み込み定数
OK vbOK 1
キャンセル vbCancel 2
中止 vbAbort 3
再試行 vbRetry 4
無視 vbIgnore 5
はい vbYes 6
いいえ vbNo 7

 

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

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

 

MEMO

If条件文についてはこちらの記事も参考になります。

vbaifjyokeneyecatch「If条件文」のVBAコードの組み方。条件の絞り方を最速に理解。

 

メッセージボックスB08コード

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実際の使い方 まとめ

 

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

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

 

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

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

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

 

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

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

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

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

 

短期間でエクセルVBAの独学習得を目指したいなら

 

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

独習のための大切な7つのポイントは、上記記事にて解説しています。

重要ワード

独習によるVBA習得のキーワードは、

出来るだけ多くの実例に触れること!

です。

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

 

このサイトでよく使うVBAのコードのトピックを纏めています。

「エクセルVBA最速理解」の記事一覧を開く

 

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

 

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