MsgBox(メッセージボックス)
説明
メッセージを表示する
メッセージボックス関数の使い方についてです。
Microsoft公式は基本構文は下記のとおりに使用します。
MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])
prompt ・・・ポップアップのメインに表示する文字。省略不可。
buttons・・・ポップアップに表示するボタン。引数の省略可。省略時は「OK」ボタンのみ表示される。
title ・・・ポップアップのタイトルに表示する文字。
引数の省略可能。省略時は[Microsoft Excel]と表示される。
helpfile ・・・基本的に使用しないので無視して良い(後述参照)。
通常のメッセージ表示では指定せず、エラー発生時等のヘルプファイルを開く時のみ指定。
第二引数[buttons]に"vbMsgBoxHelpButton"を指定する必要がある。
例外処理を熟知している必要があり、本引数には Err.HelpFile を指定する※。
context ・・・基本的に使用しないので無視して良い(後述参照)。
通常のメッセージ表示では指定せず、エラー発生時等のヘルプファイルを開く時のみ指定。
第四引数[helpfile]と同様に、第二引数[buttons]に"helpfile"を指定する必要がある。
例外処理を熟知している必要があり、本引数には Err.HelpContext を指定する※。
※helpfile と contextの使用例は、このページでは扱いません。
例外処理の【メッセージボックスにエラーのヘルプを用意する】を参照ください。
エクセルを起動して、新規ブックを開いてください。
次に下の黄色枠内のプログラムをVBEへコピー&ペーストします。
VBEを開くには、エクセルをアクティブにして"Alt"+"F11"の同時に押します。
マクロを実行する際はF5ボタンを押します。
Sub Sample_MsgBox1()
MsgBox "マクロが実行されました。"
End Sub
上記サンプルを実行すると、下図が表示されます。
メッセージボックスにアイコンを表示させる
メッセージボックスの使い方についてです。基本構文は下記のとおりに使用します。
Sub Sample_MsgBox2()
MsgBox "マクロが実行されました", vbInformation
End Sub
下記の図が表示されます。
vbInformationで「ⅰ」のアイコンが表示されます。
第二引数で、どのアイコンを表示するかを指定できます。
他のアイコンについては下表を参照してください。
定数 | アイコン | 使用用途 |
---|---|---|
vbInformation | [ 情報メッセージ ] アイコンを表示します。 | |
vbQuestion | [ 問い合わせメッセージ ] アイコンを表示します。 | |
vbCritical | [ 重大なメッセージ ] アイコンを表示します。 | |
vbExclamation | [ 警告メッセージ ] アイコンを表示します。 |
「OK」以外のボタンを表示する
今回は「OK」ボタン以外のボタンを表示してみましょう。
表示する文字の後ろに「 , 」をつけ、『vbYesNo』と指定してみましょう。
下記のサンプルをコピペして実行しましょう。
Sub Sample_MsgBox3()
MsgBox "今日は晴れですか?", vbYesNo
End Sub
実行すると下の図が表示されます。
「vbYesNo」と指定したため、「OK」ボタンから「Yes」と「No」のボタンに変更されました。
「vbOKCancel」と指定すると「OK」と「キャンセル」の2つのボタンになります。
なお、ボタンの種類を指定しないと「vbOKOnly」と指定したと判断されるため、「OK」ボタンのみの表示となります。
ボタン一覧表を記載します。
定数 | 値 | 説明 |
---|---|---|
vbOKOnly | 0 | [ OK ] ボタンのみを表示します。 (デフォルトの設定) |
vbYesNo | 0 | [ はい ] 、 [ いいえ ] ボタンを表示します。 |
vbOKCancel | 1 | [ OK ] 、 [ キャンセル ] ボタンを表示します。 |
vbAbortRetryIgnore | 2 | [はい] 、 [いいえ] 、 [キャンセル] ボタンを表示します。 |
アイコンを表示させ、「OK」以外のボタンを表示する
アイコンと指定のボタンを表示する方法です。
第二引数に『アイコンの種類 + ボタンの種類』と指定します。
Sub Sample_MsgBox4()
MsgBox "今日は晴れですか?", vbYesNo + vbQuestion
End Sub
実行すると下の図が表示されます。タイトルを変更する
メッセージボックスの左上に表示されているタイトルを変更します。
早速、サンプルプログラムをコピペして実行をしましょう。
Sub Sample_MsgBox5()
MsgBox "今日は晴れですか?", vbYesNo + vbQuestion, "お天気は・・・?"
End Sub
実行すると下の図が表示されます。
メッセージボックスの戻り値一覧(クリックしたボタンでの分岐処理)
メッセージボックスで戻り値を取得することによって、どのボタンをクリックしたか判断できます。
戻り値を取得するため、MsgBoxの後ろに()で囲む必要があります。
Sub Sample_MsgBox6()
Dim ans As Long
ans = MsgBox("お寿司は好きですか?", vbYesNoCancel)
' 「はい」を選択したとき
If ans = vbYes Then
MsgBox "今度、一緒に行きましょう!"
' 「いいえ」を選択したとき
ElseIf ans = vbNo Then
MsgBox "では、焼肉に行きましょう!"
Else
MsgBox "キャンセルボタンがクリックされました。"
End If
End Sub
戻り値の一覧表です。
定数 | 値 | 説明 |
---|---|---|
vbOK | 1 | OKボタン |
vbCancel | 2 | Cancel |
vbAbort | 3 | 中止 |
vbRetry | 4 | 再試行 |
vbIgnore | 5 | 無視 |
vbYes | 6 | はい |
vbNo | 7 | いいえ |
メッセージボックスのボタンの規定値を変更する
メッセージボックスで複数のボタンを設置したとき、通常だと一番左のボタンが選択されています。
第二引数に特定の定数を加算することで変更することができます。
Sub Sample_MsgBox7()
MsgBox "スライムを仲間にしますか?", vbYesNoCancel + vbDefaultButton2
End Sub
規定値を変更するとキーボード操作しているユーザーはEnterを押すだけで済むようになるので、
少し楽になったり、誤操作が減ったりします。
一覧表です。
定数 | 値 | 説明 |
---|---|---|
vbDefaultButton1 | 0 | 1番目のボタンを既定にします。 (デフォルトの設定) |
vbDefaultButton2 | 256 | 2番目のボタンを既定にします。 |
vbDefaultButton3 | 512 | 3番目のボタンを既定にします。 |
vbDefaultButton4 | 768 | 4番目のボタンを既定にします。 |
確認テスト
次の問いに答えなさい。
- メッセージボックスに文字列"処理が完了しました。"と表示させなさい。
- メッセージボックスに文字列"処理に失敗しました。"と表示させ、「×」のアイコンを表示させなさい。
- メッセージボックスに文字列"処理を続行しますか?"と表示させ、「?」のアイコンと「OK」および「キャンセル」のボタン表示させなさい。
- メッセージボックスに文字列"処理が完了しました。"と表示させ、タイトルに「マクロVer1.0」と表示させなさい。このとき、アイコンは表示せず、ボタンは「OK」ボタンのみ表示させること。