MsgBox関数

 メッセージを記したダイアログを表示します。
 併せていくつかのボタンを表示することができ、どのボタンが選択されたかを戻り値として受け取ることができます。
 なお通常はVBAで用いますが、フォームのテキストボックスなどのコントロールソースに用いて値を取得することも可能です。

使用例

例1

コード
 単純にメッセージを表示する例です。戻り値を受け取らない場合はカッコは必要ありません。

Sub Func_MsgBox()

    MsgBox "こんにちは"

End Sub

出力
 ボタンについては引数を指定していませんが、このとき「OK」ボタンだけが表示されます。
f:id:accs2014:20190203162938p:plain:left:w200

例2

コード
 戻り値を受け取る例です。また、第2引数でボタンの種類を指定しています。
 変数の型はVbMsgBoxResultとするのが標準ですが、Longなどでも機能します。

Sub Func_MsgBox()

    Dim ans As VbMsgBoxResult

    ans = MsgBox("よろしいですか", vbYesNo)

    MsgBox ans & "ですね"

End Sub

出力
 右の画像は「はい」を選択したときの表示です。戻り値はこのような数値として取得できます。
f:id:accs2014:20190203162934p:plain:left:w300f:id:accs2014:20190203162930p:plain:left:w200

例3

コード
 さらに選択されたボタンに応じた処理をする例です。
 第1引数(メッセージ)で改行を表すvbCrLfを使用しています。
 また、第3引数でタイトルを指定しています。

'ボックス右上のxボタンはvbCancelとみなされます

Sub Func_MsgBox()

    Dim ans As VbMsgBoxResult

    ans = MsgBox("カレーでよろしいですか" & vbCrLf & _
                 "「いいえ」でラーメンになります", vbYesNoCancel, "ご注文をどうぞ")

    Select Case ans
        Case vbYes
            MsgBox "ではカレーにします", , "「はい」が選択されました"
        Case vbNo
            MsgBox "ではラーメンにします", , "「いいえ」が選択されました"
        Case vbCancel
            MsgBox "何もオーダーしません", , "「キャンセル」が選択されました"
    End Select

End Sub

出力
 右の画像は「はい」を選択したときの表示です。
f:id:accs2014:20190203162927p:plain:left:w350f:id:accs2014:20190203162925p:plain:left:w200

例4

コード
 第2引数で複数のオプションを併用している例です。 vbExclamationは「!」マークのアイコン表示、vbDefaultButton2は2つ目のボタンを既定値にする指定です。

Sub Func_MsgBox()

    Dim ans As VbMsgBoxResult

    ans = MsgBox("本当によろしいですか?", _
                 vbYesNo + vbExclamation + vbDefaultButton2, "確認")
    
    Select Case ans
        Case vbYes
            MsgBox ("実行します")
        Case vbNo
            MsgBox ("中止します")
    End Select

End Sub

出力
 アイコンが表示され、さらに「いいえ」ボタンが既定値になっているのがわかります。
 右の画像は「いいえ」を選択したときの表示です。
f:id:accs2014:20190203163002p:plain:left:w300f:id:accs2014:20190203162958p:plain:left:w200

書式

MsgBox(メッセージ[,ボタン表示,タイトル,ヘルプファイル,コンテキスト])

 ボタン表示に指定できる値(定数と数値のいずれか)と意味は次のとおりです。
 「vbYesNo + vbQuestion」や「4 + 32」あるいは「36」といった表記をすることにより、複数の値を併用することができます。数値を使うと解読が難しいので定数を用いるのが無難 です。
 なお同系の値は併用できません(vbOKOnlyとvbOKCancelなど)。

ボタン表示(定数)ボタン表示(数値)意味
vbOKOnly0「OK」のボタンだけを表示します
vbOKCancel1「OK」「キャンセル」の2つのボタンを表示します
vbAbortRetryIgnore2「中止」「再試行」「無視」の3つのボタンを表示します
vbYesNoCancel3「はい」「いいえ」「キャンセル」の3つのボタンを表示します
vbYesNo4「はい」「いいえ」の2つのボタンを表示します
vbRetryCancel5「再試行」「キャンセル」の2つのボタンを表示します
vbCritical16警告アイコン(×)を表示します
vbQuestion32問い合わせ(疑問符)アイコン(?)を表示します
vbExclamation48注意(感嘆符)アイコン(!)を表示します
vbInformation64情報アイコン(i)を表示します
vbDefaultButton101つ目のボタンを既定値にします
vbDefaultButton22562つ目のボタンを既定値にします
vbDefaultButton35123つ目のボタンを既定値にします
vbDefaultButton47684つ目のボタンを既定値にします
なお、例えばvbYesNoCancelとvbMsgBoxHelpButtonを併用した場合にボタンが4つになります
vbApplicationModal0いずれかのボタンを選択するまで他の操作ができません
ただしAccessで他のファイルを操作することはできるようです
vbSystemModal4096いずれかのボタンを選択するまで他の全てのアプリケーションの操作ができません
ただし実際にはそのように機能せず、ダイアログの表示がより前面に出るだけでvbApplicationModalとほぼ違いがないようです
vbMsgBoxHelpButton16384「ヘルプ」ボタンを表示します
これは他のボタン表示(vbOKOnlyなど)と併用できます
VbMsgBoxSetForeground65536ダイアログを最前面に表示します
vbMsgBoxRight524288メッセージのテキストを右揃えにします
vbMsgBoxRtlReading1048576読み上げの方向を右から左にします

 タイトルの指定を省略すると「Microsoft Access」と表示されます。
 ヘルプファイルはヘルプを設定するときに使用するヘルプファイルを指定する文字列です。同時にコンテキストを指定する必要があります。
 コンテキストはヘルプトピックに該当するコンテキスト番号を指定します。同時にヘルプファイルを指定する必要があります。

戻り値

 戻り値は次の定数または数値のいずれかで判定できます。
 「OK」と「はい」を間違えやすいので注意してください。
戻り値(定数)戻り値(数値)意味
vbOK1「OK」が選択された
vbCancel2「キャンセル」またはダイアログ右上の「×」が選択された
vbAbort3「中止」が選択された
vbRetry4「再試行」が選択された
vbIgnore5「無視」が選択された
vbYes6「はい」が選択された
vbNo7「いいえ」が選択された

備考

 冒頭にも記したように、通常はVBAで用いますが実はフォームなどでも利用することはできます。
 さらに珍妙ですがクエリで使用することもできます。

www.accessdbstudy.net