EXCELのVBAにあるメッセージボックス(Msgbox)の機能は、ユーザーにお知らせをしたり、注意喚起をしたりできるほか、ユーザーに判断を任せることができます。
本記事では、「VBAでMsgboxにユーザー判断を入力する方法」について解説します。
メッセージボックスと似たインプットボックスという機能も紹介しますので、ぜひご覧ください。
表示・タイトル変更・改行の解説はこちらの記事にありますので、合わせてご覧ください。
1.EXCEL VBAのメッセージボックス(Msgbox)に表示できるボタンの種類
こんにちは。エクセルマン・ブリーダーのしもむぎ(@re_znd13)です。
まずはメッセージボックスに表示できるボタンの種類を見てみましょう。
ここで紹介するのがすべてではないですが、よく使うのはこのOK、キャンセル、はい、いいえではないかと思います。
これらを表示したソースコードは以下の通り。
“(ダブルクォーテーション)で囲った部分の引数がメッセージ部分になります。
その次の引数には,(コンマ)区切りでボタンの種類に応じたコードを入れます。
Sub ボタンの種類()
Dim button As Long
button = MsgBox("OKのみ", vbOKOnly)
button = MsgBox("OK と キャンセル", vbOKCancel)
button = MsgBox("はい と いいえ", vbYesNo)
button = MsgBox("はい と いいえ と キャンセル", vbYesNoCancel)
End Sub
2.ユーザーの入力に応じて処理を分岐
前節でいくつかボタンの種類を紹介しましたが、ユーザーがどれを選択して入力したかに応じて、あとに続く処理を分岐することができます。
前節の2番目に示したOKとキャンセルでのコードの例は以下になります。
OKが入力された場合、buttonと定義した変数がvbOKとなりますので、if文を使って分岐ができます。
同様に、キャンセルが入力された場合は、vbCancelとなります。
Sub ユーザー入力に応じて分岐1()
Dim button As Long
button = MsgBox("OK と キャンセル", vbOKCancel)
If button = vbOK Then
MsgBox "OKが押されました"
ElseIf button = vbCancel Then
MsgBox "キャンセルが押されました"
End If
End Sub
はいといいえとキャンセルの場合には3つの分岐が作れますね。
VBAコードの例は以下になります。
Sub ユーザー入力に応じて分岐2()
Dim button As Long
button = MsgBox("はい と いいえ と キャンセル", vbYesNoCancel)
If button = vbYes Then
MsgBox "はいが押されました"
ElseIf button = vbCancel Then
MsgBox "キャンセルが押されました"
Else
MsgBox "いいえが押されました"
End If
End Sub
3.番外編:インプットボックスの使い方
前節では用意したボタンの選択に応じて分岐する方法について見てみました。
選択肢が少ないので、もう少し踏み込んでみましょう。
ここではユーザーにテキスト(文字列や数値)を入力してもらう方法を見てみます。
以下のコードを見てください。
メッセージボックスと似た機能インプットボックスというのを使っているコードです。
Sub 番外編インプットボックス()
Dim IB As String
IB = InputBox("このブログのタイトルはなんでしょう?")
If IB = "エクセル部" Then
MsgBox "正解です!"
Else
MsgBox "不正解です..."
End If
End Sub
実行結果は以下の画像のようになります。
「エクセル部」というテキストが入力されると「正解です!」、それ以外では「不正解です…」というメッセージが表示されるようにしてみました。
if文の条件式にor等を使って曖昧な表現も許容すればクイズのマクロも組めそうですね。
4.まとめ
この記事では「VBAでMsgboxにユーザー判断を入力する方法」を解説しましたが、いかがでしたか?
いくつかの選択肢を表示して分岐ができるメッセージボックスと、テキスト(文字列や数値)を入力してもらうインプットボックス。
双方の特徴を掴んで、うまく使い分けたいですね。