メッセージボックス MsgBoxの使い方を最速理解で説明します。
気軽に使えるUIです。メッセージ表示と利用者の応答を求める2つのタイプがあります。
こんにちは、じゅんぱ店長(@junpa33)です。
エクセルVBAでユーザーフォームを使わなくても、簡単なユーザーとのやり取りならメッセージボックスでも可能です。
今回は、この「ユーザーへのメッセージや選択肢を提示する」ユーザーフォームについての説明をします。
コンテンツ
メッセージボックス MsgBoxの使い方
メッセージボックスはVBAプログラムを処理した結果を「情報としてユーザーに知らせる」ウインドウであり、
また、これから進めるプログラムの進行をどうするか「ユーザーに判断してもらう」という関数になっています。
「情報をユーザーに知らせる」という意味では、ユーザーは「はいそうですか。」となりますが、
「ユーザーに判断してもらう」という事では、ユーザーは「わかりました」、「嫌です」、「やめます。」などの返答が出来るということになります。
また、裏技的な考え方にもなりますが、メッセージボックスが表示されている間は、
VBAコードの進行が一時停止しています。
何らかのボタンが押されることで再開するわけですが、”ポーズスイッチ”的に利用することも出来ます。
(もっとも、そのメッセージボックスが動いているエクセルBOOKは再開されるまでは操作不能になりますが)
「情報をユーザーに知らせる」ための MsgBoxの使い方
シンプルデザインな表示方法
この使い方でのメッセージボックス MsgBoxのサンプルコードはこのようになります。
Sub メッセージボックスA01()
MsgBox "ありがとうございました。"
End Sub
超簡単に出来てしまいました。実用的にはこれで何も問題ないと思います。
チェック
表示を見てみると、
タイトルは「Microsoft Excel」、設置ボタンは「OK」が無指示で付加されています。
注意をひくデザインな表示方法
アイコンを付ける
Sub メッセージボックスA02()
MsgBox "ありがとうございました。", vbCritical
End Sub
Sub メッセージボックスA03()
MsgBox "ありがとうございました。", vbQuestion
End Sub
Sub メッセージボックスA04()
MsgBox "ありがとうございました。", vbExclamation
End Sub
Sub メッセージボックスA05()
MsgBox "ありがとうございました。", vbInformation
End Sub
タイトルをつけて何のメッセージかをハッキリさせる
タイトルを付ければ、より何のメッセージか分かり易くなります。
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」と「キャンセル」ボタンの表示・・・「vbOKCancel」
Sub メッセージボックスB03()
Dim MBtn As Long
MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
"データ入力しますか?", vbOKCancel + vbExclamation, _
"入力問合せ")
End Sub
「中止」「再試行」「無視」ボタンの表示・・・「vbAbortRetryIgnore」
Sub メッセージボックスB04()
Dim MBtn As Long
MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
"データ入力しますか?", _
vbAbortRetryIgnore + vbExclamation, "入力問合せ")
End Sub
「はい」「いいえ」「キャンセル」ボタンの表示・・・「vbYesNoCancel」
Sub メッセージボックスB05()
Dim MBtn As Long
MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
"データ入力しますか?", _
vbYesNoCancel + vbExclamation, "入力問合せ")
End Sub
「はい」「いいえ」ボタンの表示・・・「vbYesNo」
Sub メッセージボックスB06()
Dim MBtn As Long
MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
"データ入力しますか?", _
vbYesNo + vbExclamation, "入力問合せ")
End Sub
「再試行」「キャンセル」ボタンの表示・・・「vbRetryCancel」
Sub メッセージボックスB07()
Dim MBtn As Long
MBtn = MsgBox("ありがとうございました。" & vbCrLf & _
"データ入力しますか?", _
vbRetryCancel + vbExclamation, "入力問合せ")
End Sub
ユーザーの回答をコードの実行に反映する方法
クリックするボタンには、戻り値として組み込み定数が割り当てられています。
例えば「OK」をクリックしたとき戻り値として「vbOK」が返されます。
ボタン | 組み込み定数 | 値 |
---|---|---|
OK | vbOK | 1 |
キャンセル | vbCancel | 2 |
中止 | vbAbort | 3 |
再試行 | vbRetry | 4 |
無視 | vbIgnore | 5 |
はい | vbYes | 6 |
いいえ | vbNo | 7 |
If条件文を使って、押されるボタン別に条件分岐を組み上げます。
「はい」ボタンでセルB2に ”はい” を入力。「いいえ」ボタンでセルB4に “いいえ” を入力。「キャンセル」ボタンでプロシージャーを抜けます。
- If条件文についてはこちらの記事も参考になります。ここに内容
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の独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。