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

Excel・VBA

メッセージを表示する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の設定は定数もしくは値を指定します。

設定できる基本ボタンは次の通りです。

定数       内容(表示されるボタン)
vbOKOnly0「OK」ボタンのみ
vbOKCancel1「OK」,「キャンセル」
vbAbortRetryIgnore2「中止」,「再試行」,「無視」
vbYesNoCancel3「はい」,「いいえ」,「キャンセル」
vbYesNo4「はい」,「いいえ」
vbRetryCancel5「再試行」,「キャンセル」

buttosの設定はこれらの基本ボタンに加えて、次の項目を設定できます。

省略した場合は、vbOKOnlyが適用されます。

  • ヘルプボタンの追加
  • promptで指定した文字列の先頭にアイコンを表示
  • 基本ボタンの既定値
  • その他

指定する項目の組み合わせ方法は、定数と値で異なります。

  • 定数で指定する場合:定数と定数の間に”+“を入れる
  • 値で指定する場合:指定する項目の値の和を指定する

ヘルプボタンの設定

ヘルプボタンは、vbMsgBoxHelpButtonを基本ボタンの設定に追加します。

ヘルプボタンを表示させるには、helpfileとcontextでヘルプファイルに関する情報を指定しておく必要があります。

promptで指定した文字列の先頭にアイコンを表示

アイコンを指定すると下図のようになります。

指定できるアイコンの種類は次の通りです。

  画像  定数  値  アイコンの種類
vbCritical16重大なメッセージ
vbQuestion32警告クエリ
vbExclamation48警告メッセージ
vbInformation64情報メッセージ

基本ボタンの既定値

ダイアログボックスが表示された際に既定値となるボタンを設定します。

ボタンの既定値を設定すると次のように変化します(図では第二ボタンを既定値に変更)

なおボタンは表示される順に左から第一、第二、・・・となります。

ボタン既定値の設定は次の種類があります。

定数  値      内容
vbDefaultButton10第一ボタンを既定にする
vbDefaultButton2256第二ボタンを既定にする
vbDefaultButton3512第三ボタンを既定にする
vbDefaultButton4768第四ボタンを既定にする

その他の設定

その他設定できる項目は次の通りです。

定数 内容
vbApplicationModal0メッセージ ボックスに応答するまで、作業が中断される。
vbSystemModal4096メッセージ ボックスに応答するまで、全てのアプリケーションが中断される。
vbMsgBoxSetForeground65536ダイアログボックスをエクセルの前景ウインドウに指定
vbMsgBoxRight524288promptに表示する文字列を右揃えにする

titleの設定

ダイアログボックスのタイトルを指定します。

タイトルの文字列は改行不可です。

MsgBox関数の戻り値

MsgBox関数の戻り値は整数型となります。

押されたボタンの種類と戻り値の関係は次の通りです。

ボタン 戻り値
OK1
キャンセル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

今回はここまでです。

コメント

タイトルとURLをコピーしました