MsgBox関数は、ユーザーに対してメッセージを表示したい場合に使用します。
また、そのメッセージに対してユーザーがどのように答えたのか、つまり、
どのボタンを押したのかという値を返します。
構文 MsgBox(Prompt, Buttons, Title, HelpFile, Context)
設定項目 内容
Prompt ダイアログボックスに表示するメッセージを指定 [省略不可]
Buttons 表示するボタンの種類などを設定(一覧参照) [省略可能]
Title ダイアログボックスのタイトルバーの文字列を指定 [省略可能]
HelpFile ヘルプを設定する場合の、ヘルプファイルの名前を指定 [省略可能]
Context 表示したいヘルプトピックを表すコンテキスト番号を指定 [省略可能]
表示するボタンの種類や、メッセージとともに表示するアイコンの種類、
そのまま[Enter]キーを押したときに押されたと判断される標準ボタンの設定、
さらにはシステムモーダルにするかアプリケーションモーダルにするのか、
といった設定は全て引数Buttonsで行います。次に示す一覧の定数の組合わせ
で指定します。
・引数buttonsで使用する定数一覧(VbMsgBoxStyle)
グループ 定数 値 内容
ボタンの種類 vbOKOnly 0 [OK]のみ(既定値)
と個数 vbOKCancel 1 [OK] と [キャンセル]
vbAbortRetryIgnore 2 [中止]、[再試行]、および [無視]
vbYesNoCancel 3 [はい]、[いいえ]、および [キャンセル]
vbYesNo 4 [はい] と [いいえ]
vbRetryCancel 5 [再試行] と [キャンセル]
アイコン vbCritical 16 警告 [bt01.bmp]
の種類 vbQuestion 32 問い合わせ [bt02.bmp]
vbExclamation 48 注意 [bt03.bmp]
vbInformation 64 情報 [bt04.bmp]
標準ボタン vbDefaultButton1 0 第1ボタンを標準ボタンに
vbDefaultButton2 256 第2ボタンを標準ボタンに
vbDefaultButton3 512 第3ボタンを標準ボタンに
vbDefaultButton4 768 第4ボタンを標準ボタンに
モーダル vbApplicationModal 0 アプリケーションモーダルに設定
かどうか vbSystemModal 4096 システムモーダルに設定
vbMsgBoxHelpButton 16384 ヘルプボタンを追加
VbMsgBoxSetForeground 65536 最前面のウィンドウとして表示
vbMsgBoxRight 524288 テキストを右寄せで表示
vbMsgBoxRtlReading 1048576 テキストを右から左の方向で表示
引数を組合わせて指定する際には、矛盾しない組合わせで指定する必要があります。
つまり、それぞれのグループからは1つの定数しか設定できません。なお、省略時は
[OK]ボタンのみが表示されます。
MsgBox関数の戻り値と押したボタンの関係は次の一覧のとおりです。
・MsgBox関数の戻り値で使用する定数一覧(VbMsgBoxResult)
定数 値 押したボタン
vbOK 1 [OK]
vbCancel 2 [キャンセル]
vbAbort 3 [中止]
vbRetry 4 [再試行]
vbIgnore 5 [無視]
vbYes 6 [はい]
vbNo 7 [いいえ]
次のサンプルは、MsgBox関数の戻り値によって処理を分岐させる処理の一例です。
●サンプル1●
Sub MsgBoxSamp1()
Dim myPass As String
Dim Ret As Integer
InputPass:
On Error GoTo ErrHandle
myPass = InputBox("シート保護解除用のパスワードを入力してください" & vbCr & _
"(ヒント : 1文字の半角小文字のアルファベット)")
ActiveSheet.Unprotect Password:=myPass
Exit Sub
ErrHandle:
Ret = MsgBox(Prompt:="保護解除に失敗!" & vbCr & "やり直しますか?", _
Buttons:=vbRetryCancel + vbCritical + vbDefaultButton2, _
Title:="保護解除エラー")
'---[再試行] と [キャンセル] + 警告 + 第2ボタンを標準
If Ret = vbRetry Then '---再試行が押されたときの処理
Resume InputPass '---再度パスワード入力
End If
End Sub
|