Home > 即効テクニック > Excel VBA > 関数関連のテクニック > メッセージを表示する(MsgBox関数)

即効テクニック

関数関連のテクニック

メッセージを表示する(MsgBox関数)

(Excel 2000)
ユーザーに対してメッセージを表示したい場合に使用します。また、そのメッセージに対してユーザーがどのように答えたのか、つまり、どのボタンを押したのかという値を返します。


  構文 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