メッセージを記したダイアログを表示します。
併せていくつかのボタンを表示することができ、どのボタンが選択されたかを戻り値として受け取ることができます。
なお通常はVBAで用いますが、フォームのテキストボックスなどのコントロールソースに用いて値を取得することも可能です。
使用例
例1
コード
単純にメッセージを表示する例です。戻り値を受け取らない場合はカッコは必要ありません。
Sub Func_MsgBox() MsgBox "こんにちは" End Sub
出力
ボタンについては引数を指定していませんが、このとき「OK」ボタンだけが表示されます。
例2
コード
戻り値を受け取る例です。また、第2引数でボタンの種類を指定しています。
変数の型はVbMsgBoxResultとするのが標準ですが、Longなどでも機能します。
Sub Func_MsgBox() Dim ans As VbMsgBoxResult ans = MsgBox("よろしいですか", vbYesNo) MsgBox ans & "ですね" End Sub
出力
右の画像は「はい」を選択したときの表示です。戻り値はこのような数値として取得できます。
例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
出力
右の画像は「はい」を選択したときの表示です。
例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
出力
アイコンが表示され、さらに「いいえ」ボタンが既定値になっているのがわかります。
右の画像は「いいえ」を選択したときの表示です。
書式
MsgBox(メッセージ[,ボタン表示,タイトル,ヘルプファイル,コンテキスト])
ボタン表示に指定できる値(定数と数値のいずれか)と意味は次のとおりです。
「vbYesNo + vbQuestion」や「4 + 32」あるいは「36」といった表記をすることにより、複数の値を併用することができます。数値を使うと解読が難しいので定数を用いるのが無難 です。
なお同系の値は併用できません(vbOKOnlyとvbOKCancelなど)。
ボタン表示(定数) | ボタン表示(数値) | 意味 |
---|---|---|
vbOKOnly | 0 | 「OK」のボタンだけを表示します |
vbOKCancel | 1 | 「OK」「キャンセル」の2つのボタンを表示します |
vbAbortRetryIgnore | 2 | 「中止」「再試行」「無視」の3つのボタンを表示します |
vbYesNoCancel | 3 | 「はい」「いいえ」「キャンセル」の3つのボタンを表示します |
vbYesNo | 4 | 「はい」「いいえ」の2つのボタンを表示します |
vbRetryCancel | 5 | 「再試行」「キャンセル」の2つのボタンを表示します |
vbCritical | 16 | 警告アイコン(×)を表示します |
vbQuestion | 32 | 問い合わせ(疑問符)アイコン(?)を表示します |
vbExclamation | 48 | 注意(感嘆符)アイコン(!)を表示します |
vbInformation | 64 | 情報アイコン(i)を表示します |
vbDefaultButton1 | 0 | 1つ目のボタンを既定値にします |
vbDefaultButton2 | 256 | 2つ目のボタンを既定値にします |
vbDefaultButton3 | 512 | 3つ目のボタンを既定値にします |
vbDefaultButton4 | 768 | 4つ目のボタンを既定値にします なお、例えばvbYesNoCancelとvbMsgBoxHelpButtonを併用した場合にボタンが4つになります |
vbApplicationModal | 0 | いずれかのボタンを選択するまで他の操作ができません ただしAccessで他のファイルを操作することはできるようです |
vbSystemModal | 4096 | いずれかのボタンを選択するまで他の全てのアプリケーションの操作ができません ただし実際にはそのように機能せず、ダイアログの表示がより前面に出るだけでvbApplicationModalとほぼ違いがないようです |
vbMsgBoxHelpButton | 16384 | 「ヘルプ」ボタンを表示します これは他のボタン表示(vbOKOnlyなど)と併用できます |
VbMsgBoxSetForeground | 65536 | ダイアログを最前面に表示します |
vbMsgBoxRight | 524288 | メッセージのテキストを右揃えにします |
vbMsgBoxRtlReading | 1048576 | 読み上げの方向を右から左にします |
タイトルの指定を省略すると「Microsoft Access」と表示されます。
ヘルプファイルはヘルプを設定するときに使用するヘルプファイルを指定する文字列です。同時にコンテキストを指定する必要があります。
コンテキストはヘルプトピックに該当するコンテキスト番号を指定します。同時にヘルプファイルを指定する必要があります。
戻り値
戻り値は次の定数または数値のいずれかで判定できます。「OK」と「はい」を間違えやすいので注意してください。
戻り値(定数) | 戻り値(数値) | 意味 |
---|---|---|
vbOK | 1 | 「OK」が選択された |
vbCancel | 2 | 「キャンセル」またはダイアログ右上の「×」が選択された |
vbAbort | 3 | 「中止」が選択された |
vbRetry | 4 | 「再試行」が選択された |
vbIgnore | 5 | 「無視」が選択された |
vbYes | 6 | 「はい」が選択された |
vbNo | 7 | 「いいえ」が選択された |
備考
冒頭にも記したように、通常はVBAで用いますが実はフォームなどでも利用することはできます。
さらに珍妙ですがクエリで使用することもできます。