メッセージを表示するMsgBox関数について紹介します。
MsgBox関数はメッセージを表示させるだけでなく、ユーザーに「はい」か「いいえ」の選択をさせることができる便利な関数です。
MsgBoxの概要
MsgBoxの書式は次の通りです。
《書式》
MsgBox(prompt,[buttons],[title],[helpfile,context])
※[]内は省略可
helpfile,contextを設定する場合、別途html形式のヘルプファイルを用意する必要があります。この記事では、helpfile,contextについては割愛させていただきます。
その他の設定項目と実際の画面の関係は次の通りです。
また、buttonsの設定を省略しpromptとtitleのみを設定する場合は次のようにします。
MsgBox(prompt,,title)
promptとtitleの間にカンマを2つ書くだけ(buttonsは空白)です。
promptの設定
ダイアログボックスに表示する文字列を指定します。
任意の位置で文字列を改行する場合、改行コードはを利用します。改行コードはいくつかありますが、vbCrLfで改行可能です。
改行は、改行したい位置に & vbCrLf & を入れる
buttonsの設定
ボタンの種類を設定します。buttonosの設定は定数もしくは値を指定します。
設定できる基本ボタンは次の通りです。
定数 | 値 | 内容(表示されるボタン) |
vbOKOnly | 0 | 「OK」ボタンのみ |
vbOKCancel | 1 | 「OK」,「キャンセル」 |
vbAbortRetryIgnore | 2 | 「中止」,「再試行」,「無視」 |
vbYesNoCancel | 3 | 「はい」,「いいえ」,「キャンセル」 |
vbYesNo | 4 | 「はい」,「いいえ」 |
vbRetryCancel | 5 | 「再試行」,「キャンセル」 |
buttosの設定はこれらの基本ボタンに加えて、次の項目を設定できます。
省略した場合は、vbOKOnlyが適用されます。
- ヘルプボタンの追加
- promptで指定した文字列の先頭にアイコンを表示
- 基本ボタンの既定値
- その他
指定する項目の組み合わせ方法は、定数と値で異なります。
- 定数で指定する場合:定数と定数の間に”+“を入れる
- 値で指定する場合:指定する項目の値の和を指定する
ヘルプボタンの設定
ヘルプボタンは、vbMsgBoxHelpButtonを基本ボタンの設定に追加します。
ヘルプボタンを表示させるには、helpfileとcontextでヘルプファイルに関する情報を指定しておく必要があります。
promptで指定した文字列の先頭にアイコンを表示
アイコンを指定すると下図のようになります。
指定できるアイコンの種類は次の通りです。
画像 | 定数 | 値 | アイコンの種類 |
vbCritical | 16 | 重大なメッセージ | |
vbQuestion | 32 | 警告クエリ | |
vbExclamation | 48 | 警告メッセージ | |
vbInformation | 64 | 情報メッセージ |
基本ボタンの既定値
ダイアログボックスが表示された際に既定値となるボタンを設定します。
ボタンの既定値を設定すると次のように変化します(図では第二ボタンを既定値に変更)
なおボタンは表示される順に左から第一、第二、・・・となります。
ボタン既定値の設定は次の種類があります。
定数 | 値 | 内容 |
vbDefaultButton1 | 0 | 第一ボタンを既定にする |
vbDefaultButton2 | 256 | 第二ボタンを既定にする |
vbDefaultButton3 | 512 | 第三ボタンを既定にする |
vbDefaultButton4 | 768 | 第四ボタンを既定にする |
その他の設定
その他設定できる項目は次の通りです。
定数 | 値 | 内容 |
vbApplicationModal | 0 | メッセージ ボックスに応答するまで、作業が中断される。 |
vbSystemModal | 4096 | メッセージ ボックスに応答するまで、全てのアプリケーションが中断される。 |
vbMsgBoxSetForeground | 65536 | ダイアログボックスをエクセルの前景ウインドウに指定 |
vbMsgBoxRight | 524288 | promptに表示する文字列を右揃えにする |
titleの設定
ダイアログボックスのタイトルを指定します。
タイトルの文字列は改行不可です。
MsgBox関数の戻り値
MsgBox関数の戻り値は整数型となります。
押されたボタンの種類と戻り値の関係は次の通りです。
ボタン | 戻り値 |
OK | 1 |
キャンセル | 2 |
中止 | 3 |
再試行 | 4 |
無視 | 5 |
はい | 6 |
いいえ | 7 |
MsgBox使い方の例
以下、使用例です。
Sub msgbox_sample()
Dim msg As String
Dim ans As String
Dim button As String
Dim title As String
Dim rtn As Integer
msg = "今日は日曜日ですか?"
button = vbYesNo + vbQuestion
title = "今日は日曜日?"
rtn = 0
rtn = MsgBox(msg, button, title)
If rtn = 6 Then
ans = "今日は日曜日です"
Else
ans = "今日は日曜日ではないです"
End If
MsgBox (ans)
End Sub
今回はここまでです。
コメント