メッセージボックス MsgBoxの使い方を、簡単に分かり易く最速で理解いただけるように解説します。
簡易型のユーザーインターフェイスですので、ちょこちょこっといろんな場面で利用してはどうでしょうか。
エクセルVBAでユーザーフォームを使わなくても、簡単なユーザーとのやり取りならメッセージボックスでも可能です。
今回は、この「ユーザーへのメッセージや選択肢を提示する」ユーザーフォームについての説明をします。
こんにちは、じゅんぱ店長(@junpa33)です。
コンテンツ
メッセージボックス MsgBox実際の使い方を最速に理解
メッセージボックスはVBAプログラムを処理した結果を「情報としてユーザーに知らせる」ウインドウであり、
また、これから進めるプログラムの進行をどうするか「ユーザーに判断してもらう」という関数になっています。
「情報をユーザーに知らせる」という意味では、ユーザーは「はいそうですか。」となりますが、
「ユーザーに判断してもらう」という事では、ユーザーは「わかりました」、「嫌です」、「やめます。」などの返答が出来るということになります。
また、裏技的な考え方にもなりますが、メッセージボックスが表示されている間は、
VBAコードの進行が一時停止しています。
何らかのボタンが押されることで再開するわけですが、”ポーズスイッチ”的に利用することも出来ます。
(もっとも、そのメッセージボックスが動いているエクセルBOOKは再開されるまでは操作不能になりますが)
「情報をユーザーに知らせる」ためのメッセージボックス MsgBoxの使い方
シンプルデザインな表示方法
この使い方でのメッセージボックス MsgBoxのサンプルコードはこのようになります。
Sub メッセージボックスA01()
MsgBox "ありがとうございました。"
End Sub

超簡単に出来てしまいました。実用的にはこれで何も問題ないと思います。
タイトルは「Microsoft Excel」、設置ボタンは「OK」が無指示で付加されています。
注意をひくデザインな表示方法
アイコンを付ける
タイトルをつけて何のメッセージかをハッキリさせる
タイトルを付ければ、より何のメッセージか分かり易くなります。
Sub メッセージボックスA06()
MsgBox "ありがとうございました。", vbInformation, "入力完了です"
End Sub

「ユーザーに判断してもらう」ためのメッセージボックス MsgBoxの使い方
「ユーザーに判断を委ねる」メッセージボックスですので、ユーザーが返答するボタンも何種類かあります。
メッセージボックスに表示できるボタンは、予め組み合わせが決まっていいます。
ユーザーから回答を得るので、その「回答」を変数化し値として取得します。
今回は回答を「変数 MBtn 」としています。「=」でMsgBox関数式とつなぎます。
メッセージが文章的に長くなる場合は途中で「& vbCrLf &」を挟むと、その場所で改行されます。
アイコンも表示する場合は、「ボタン定数+アイコン定数」とします。
基本の表示スタイル
「OKボタン」1つのみの表示・・・「vbOKOnly」
Sub メッセージボックスB01()
Dim MBtn As Long
MBtn = MsgBox("ありがとうございました。" & vbCrLf & "データ入力しますか?", vbOKOnly, "入力問合せ")
End Sub
アイコンも表示する場合は、「vbOKOnly + vbExclamation」「ボタン定数+アイコン定数」とします。
Sub メッセージボックスB02()
Dim MBtn As Long
MBtn = MsgBox("ありがとうございました。" & vbCrLf & "データ入力しますか?", vbOKOnly + vbExclamation, "入力問合せ")
End Sub
ユーザーの回答をコードの実行に反映する方法
クリックするボタンには、戻り値として組み込み定数が割り当てられています。
例えば「OK」をクリックしたとき戻り値として「vbOK」が返されます。
ボタン | 組み込み定数 | 値 |
OK | vbOK | 1 |
キャンセル | vbCancel | 2 |
中止 | vbAbort | 3 |
再試行 | vbRetry | 4 |
無視 | vbIgnore | 5 |
はい | vbYes | 6 |
いいえ | vbNo | 7 |
If条件文を使って、押されるボタン別に条件分岐を組み上げます。
「はい」ボタンでセルB2に ”はい” を入力。「いいえ」ボタンでセルB4に “いいえ” を入力。「キャンセル」ボタンでプロシージャーを抜けます。
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

メッセージボックス MsgBox実際の使い方 まとめ
メッセージボックスの2つの使い方で、より使いやすいVBAプログラムを作成出来るようになります。
それ程難しくなくVBAコードに導入できたのではないでしょうか。
UIという事ではユーザーフォームという手法がメインではありますが、
このメッセージボックスとインプットボックスでも、その代用が利く場面も多くあります。
ぜひ活用をしてください。
「メッセージボックス」はエクセルVBAの対話型コード作成で、一番基本的な部分です。
コード組み立て作業中の演算結果の表示窓として使ったりもします。
これからエクセルVBAコードを自分で作っていこうとしている人であれば、
必ず使いこなせるようにしておきましょう。
短期間でエクセルVBAの独学習得を目指したいなら
エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。
けれども、
出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。
独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。
先人が行った勉強方法をあなたがそのまま利用すればよいということです。
独習のための大切な7つのポイントは、上記記事にて解説しています。
独習によるVBA習得のキーワードは、
出来るだけ多くの実例に触れること!
です。
正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。
ハッキリ言って、
本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、
手っ取り早く短期間習得できるというのは間違いないでしょう。
このサイトでよく使うVBAのコードのトピックを纏めています。
今回の記事はここまでです。 最後までご覧いただき有難うございました。