メッセージの表示関数

メッセージを表示するためのMsgBox関数は今までもよくでてきました。ユーザに注意を促したり、エラーの表示をしたりと、とてもよく使用されます。改めて、MsgBox関数を見ていきましょう。

MsgBox関数

以下構文です。

[構文]MsgBox関数

MsgBox(prompt[,buttons][,title][,helpfile,context])
    prompt:表示するメッセージ
    buttons:(省略可)ボタンの種類と個数
    title:(省略可)ダイアログボックスのタイトルバーに表示する文字列
    helpfile:(省略可)指定したヘルプファイルの名前を指定
    context:(省略可)指定したヘルプファイルのコンテキスト番号を指定

構文のカッコにカンマ区切りで表しているのが引数です。[]で囲まれているものは省略可能であることを表します。

ヘルプファイルについては、組み込み関数編(文字列関数2)のInputBox関数で補足しています。

引数buttonsについて5個の表を示します。ボタンの種類と個数を指定するグループと、アイコンの種類を指定するグループ、どのボタンが標準ボタンになるかの指定をするグループ、メッセージボックスの動作方法を指定するグループ、その他指定グループの5種です。buttonsを指定するには5種のグループから必要な値を選択して加算した合計値を指定します。

定数 内容
vbOKOnly 0(&H000) [OK]ボタンのみを表示
vbOKCancel 1(&H001) [OK]ボタンと[キャンセル]ボタンを表示
vbAbortRetryIgnore 2(&H002) [中止]、[再試行]および[無視]のボタンを表示
vbYesNoCancel 3(&H003) [はい]、[いいえ]および[キャンセル]のボタンを表示
vbYesNo 4(&H004) [はい]ボタンと[いいえ]ボタンを表示
vbRetryCalcel 5(&H005) [再試行]ボタンと[キャンセル]ボタンを表示

ボタンの種類と個数を指定

定数 内容
vbCritical 16(&H010) 警告メッセージアイコンを表示
vbQuestion 32(&H020) 問い合わせメッセージアイコンを表示
vbExclamation 48(&H030) 注意メッセージアイコンを表示
vbInformation 64(&H040) 情報メッセージアイコンを表示

アイコンの種類を指定

定数 内容
vbDefaultButton1 0(&H000) 第一ボタンを標準ボタンとする
vbDefaultButton2 256(&H100) 第二ボタンを標準ボタンとする
vbDefaultButton3 512(&H200) 第三ボタンを標準ボタンとする
vbDefaultButton4 768(&H300) 第四ボタンを標準ボタンとする

標準ボタンの設定

定数 内容
vbApplicationModai 0(&H0000) メッセージボックスに応答するまで、現在選択中のアプリケーションの実行は待機します。
vbSysyemModal 4096(&H1000) メッセージボックスに応答するまで、現在実行中のすべてのアプリケーションが待機します。

メッセージボックスの動作方法の指定

定数 内容
vbMsgBoxHelpButton 16384(&H4000) ヘルプボタンを追加
vbMsgBoxSetForeground 65536(&H10000) 最前面のウインドウとして表示
vbMsgBoxRight 524288(&H80000) テキストを右寄せに表示
vbMsgBoxRtlReading 1048576(&H100000) テキストを右から左の方向に表示

その他の設定

ボタンの表示部分とアイコンの種類を図示します。

ボタンの種類と個数

ボタンの種類と個数

図4:アイコンの種類

必要により使い分けてください。

MsgBox関数でどのボタンを押したかは、戻り値として返されます。「a=MsgBox(・・・)」と書いた時、変数aに設定されます。戻り値の内容も表にしました。

MsgBox関数の戻り値

定数 内容
vbOK 1 [OK]
vbCancel 2 [キャンセル]
vbAbort 3 [中止]
vbRetry 4 [再試行]
vbIgnore 5 [無視]
vbYes 6 [はい]
vbNo 7 [いいえ]

以下例題です。

[リスト3]Rei_MsgBox(その他の関数.xlsm)

Sub Rei_MsgBox()
    a = MsgBox("あなたは男性ですか?「はい」か「いいえ」のボタンを押してください。",     vbYesNo, "MsgBox例題")
    If a = vbYes Then
        MsgBox ("はいが押されました")
    Else
        MsgBox ("いいえが押されました")
    End If
End Sub

ボタンは「はい」と「いいえ」を表示させ、戻り値をみて、どちらを押したかを表示しています。

[コラム]MsgBoxの引数Buttonsについて

Buttonsの引数はたくさんあり、指定グループも5種あります。「はい」「いいえ」と警告メッセージアイコンを表示したいときは、vbYesNo+vbCriticalのように書いて、値を加算して指定します。パソコンのなかではどうなっているのでしょうか?。 vbYesNoが4(&H004)、vbCriticalが16(&H010)加算して20です。10進数でみると、どうやって見分けてよいのかわかりません。16進数に直してみましょう。&H014となります。1桁目にボタンの種類と個数、2桁目にアイコンの種類を指定しています。パソコンは2進数で動いています。16進表示は2進数を、人にわかりやすく表現したものでした(組み込み関数編の数値関数で説明しています)。 ボタンの種類と個数の設定値を知りたいときは、1桁目(4ビット)のみ確認すれば良いことになります。各桁に各グループは割り当てられていますので、パソコンは迷わず指定値を見つけることができるのです。