Excel VBA MsgBox 関数の使い方をマスターしよう

スポンサーリンク
くるみこ
くるみこ

前回までの内容で初心者向けの解説は一応卒業しました!
今回からは、これは知っておいた方が良いだろうと思う内容について詳しく解説していくようにしていきたいと思います(^^)
その1回目は、MsgBox関数について詳しく解説します!

レベルアップ目指して今回もしっかり勉強しま~す(^^)

よろしくお願いしますm(_ _)m

前回のおさらいはこちらの記事です(^^)/ 下のカードをクリックすれば開きます

くるみこ
くるみこ

前回記事でわかったことは
・GoTo ステートメントの使い方
・GoTo ステートメントは便利だけど多用は禁物

【この記事でわかること
・MsgBox関数の使い方がわかります

戻り値やボタンやアイコンの定数と文字列に使用する定数がわかります

スポンサーリンク

MsgBox 関数とは

ダイアログ ボックスにメッセージを表示し、ユーザーがボタンをクリックするのを待機し、ユーザーがどのボタンをクリックしたかを示す整数を返します

MsgBox 関数の構文

構文
MsgBox(prompt, [ buttons, ] [ title, ] [ helpfile, context ])

指定項目説明
Prompt必須です。 ダイアログ ボックスにメッセージとして表示される文字列式を指定します
buttons省略可能。 表示させるボタンの種類やアイコンのスタイル等を指定します
title省略可能。 ダイアログ ボックスのタイトル バーに表示される文字列式します
title が省略された場合、タイトル バーにはアプリケーションの名前が表示されます
helpfile省略可能。 ダイアログボックスの[ヘルプ]ボタンから開くヘルプファイルを指定します
引数helpfileを指定する場合は、引数contextも必ず指定する必要があります
context省略可能。 ヘルプ作成者によって適切なヘルプ トピックに割り当てられた
ヘルプ コンテキスト番号を示す数式を指定します
参照元:https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/msgbox-function

MsgBox について解説

一番単純な使い方は、もうお馴染み(^^)単にメッセージを表示するだけに使用する方法です

MsgBox ”メッセージ!”

これは、Prompt だけ指定していて、buttons の指定が無いので規定値の 0 となっています

MsgBox関数の本来の機能は、ダイアログボックスにメッセージとボタンを表示し、どのボタンが押されたかを示す整数型の数値を返すというものです

prompt 文字列の改行方法

・引数 prompt に指定できる文字数は、使用する文字の幅によって異なりますが、最大(1バイト文字の場合)で約1024文字です
・引数 promptの中で文字列が複数の行にまたがる場合の改行方法は、次の VisualBasic定数 Chr関数を使います

VB定数Chr関数説明
vbCrLfChr(13) + Chr(10)キャリッジ リターン文字とライン フィード文字の組み合わせ
vbCrChr(13)キャリッジ リターン文字
vbLfChr(10)ライン フィード文字

・行と行の間にキャリッジ リターン文字、ライン フィード文字、またはキャリッジ リターン文字とライン フィード文字の組み合わせを使用します
・文字列の接合は、 & (アンパサンド) を使います

・キャリッジリターン+ラインフィールドの使用例はつぎのとおりです(お好みでどうぞ)

Chr関数使用例: “長い文字列” & Chr(13) + Chr(10) & “長い文字列の続き”
VB定数 使用例: “長い文字列” & vbCrLf & “長い文字列の続き”

引数

引数 buttons には、次の定数を使用できます(画像クリックで拡大表示します)

VB定数画像説明
vbOKOnly0[OK] ボタンのみを表示
vbOKCancel1[OK] ボタンと
[キャンセル] ボタンを表示
vbAbortRetryIgnore2[中止]、[再試行]、[無視] の
各ボタンを表示
vbYesNoCancel3[はい]、[いいえ]、[キャンセル] の
各ボタンを表示
vbYesNo4[はい] ボタンと
[いいえ] ボタンを表示
vbRetryCancel5[再試行] ボタンと
[キャンセル] ボタンを表示
vbCritical16[警告メッセージ] アイコンを表示
vbQuestion32[問い合わせメッセージ] アイコンを表示
vbExclamation48[注意メッセージ] アイコンを表示
vbInformation64[情報メッセージ] アイコンを表示
vbDefaultButton101 番目のボタンが既定(フォーカス)
vbDefaultButton22562 番目のボタンが既定(フォーカス)
vbDefaultButton35123 番目のボタンが既定(フォーカス)
vbDefaultButton47684 番目のボタンが既定(フォーカス)
vbApplicationModal0アプリケーション モーダルに設定
アプリケーションでの作業を続行するには、
メッセージ ボックスに応答する必要あり
vbSystemModal4096システム モーダルに設定
メッセージ ボックスに応答するまで、
すべてのアプリケーションが中断
vbMsgBoxHelpButton16384[ヘルプ] ボタンを追加
vbMsgBoxSetForeground65536最前面のウィンドウとして表示
vbMsgBoxRight524288テキストを右揃えに表示する
参照元:https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/msgbox-function

・最初の値のグループ (0-5) はダイアログ ボックスに表示されるボタンの数と種類を示します
・2 番目のグループ (16、32、48、64) はアイコンのスタイルを示します
・3 番目のグループ (0、256、512) は既定のボタンを決定します
・4 番目のグループ (0、4096) は、メッセージ ボックスのモダリティを決定します
それぞれの値を合計して buttons 引数の最終的な値を作成する際は、各グループから値を 1 つだけ使用します (※ 注意:値の代わりにVisualBasic定数を使用できます

例えば、[はい] ボタンと[いいえ] ボタンを表示し、[警告メッセージ] アイコンを表示するには、引数 buttons に、定数vbYesNo と 定数vbExclamation の合計(vbYesNo + vbExclamation)を指定します

MsgBox 関数の戻り値

定数説明
vbOK1[OK] ボタンが押された時の戻り値
vbCancel2[Cancel] ボタンが押された時の戻り値
vbAbort3[中止] ボタンが押された時の戻り値
vbRetry4[再試行] ボタンが押された時の戻り値
vbIgnore5[無視] ボタンが押された時の戻り値
vbYes6[はい] ボタンが押された時の戻り値
vbNo7[いいえ] ボタンが押された時の戻り値

MsgBox 関数の使用例(サンプルコード)

Option Explicit
'MsgBox関数の使用例サンプル
Sub MsgBoxSample()

    Dim re As Long
    Dim MsgString As String
    
    MsgString = "メッセージボックス(MsgBox関数)の戻り値を" & vbCrLf & _
                "確認するテストを実行します!" & vbCrLf & _
                "ボタンを押してみてください!"
    
    'vbOKOnly + vbInformation のTEST
    re = MsgBox(MsgString, vbOKOnly + vbInformation)
    If re = 1 Then
        MsgBox "「OK」ボタンが押されました! 戻り値は [" & re & "] です!"
    End If
    
    'vbOKCancel + vbInformation のTEST
    re = MsgBox(MsgString, vbOKCancel + vbInformation)
    If re = 1 Then
       MsgBox "「OK」ボタンが押されました! 戻り値は [" & re & "] です!"
    ElseIf re = 2 Then
       MsgBox "「キャンセル」ボタンが押されました! 戻り値は [" & re & "] です!"
    Else
       MsgBox "その他ボタンが押されました! 戻り値は [" & re & "] です!"
    End If
    
    'vbAbortRetryIgnore + vbCritical のTEST
    re = MsgBox(MsgString, vbAbortRetryIgnore + vbCritical)
    Select Case re
        Case 3
            MsgBox "「中止」ボタンが押されました! 戻り値は [" & re & "] です!"
        Case 4
            MsgBox "「再試行」ボタンが押されました! 戻り値は [" & re & "] です!"
        Case 5
            MsgBox "「無視」ボタンが押されました! 戻り値は [" & re & "] です!"
        Case Else
            MsgBox "その他ボタンが押されました! 戻り値は [" & re & "] です!"
    End Select
    
    'vbYesNoCancel + vbExclamation のTEST
    re = MsgBox(MsgString, vbYesNoCancel + vbExclamation)
    If re = 6 Then
       MsgBox "「はい」ボタンが押されました! 戻り値は [" & re & "] です!"
    ElseIf re = 7 Then
       MsgBox "「いいえ」ボタンが押されました! 戻り値は [" & re & "] です!"
    ElseIf re = 2 Then
       MsgBox "「キャンセルボタン」が押されました! 戻り値は [" & re & "] です!"
    Else
       MsgBox "その他ボタンが押されました! 戻り値は [" & re & "] です!"
    End If
    
    'vbYesNo + vbInformation のTEST
    re = MsgBox(MsgString, vbYesNo + vbInformation)
    If re = 6 Then
       MsgBox "「はい」ボタンが押されました! 戻り値は [" & re & "] です!"
    ElseIf re = 7 Then
       MsgBox "「いいえ」ボタンが押されました! 戻り値は [" & re & "] です!"
    Else
       MsgBox "その他ボタンが押されました! 戻り値は [" & re & "] です!"
    End If
    
    'vbRetryCancel + vbQuestion のTEST
    re = MsgBox(MsgString, vbRetryCancel + vbQuestion)
   If re = 4 Then
       MsgBox "「再試行」ボタンが押されました! 戻り値は [" & re & "] です!"
    ElseIf re = 2 Then
       MsgBox "「キャンセル」ボタンが押されました! 戻り値は [" & re & "] です!"
    Else
       MsgBox "その他ボタンが押されました! 戻り値は [" & re & "] です!"
    End If

End Sub

・6個の事例(ボタン+アイコン)でメッセージを表示します
・各サンプルメッセージで押されたボタンの種類と戻り値をメッセージ表示します
・サンプルコードは If ステートメントで条件分岐していますが、一部 Select Case ステートメントを使って分岐しています。状況に応じて使い分けてください

・戻り値には数字ではなく、[1] vbOK のようにVB定数を使うこともできます  
・変数の宣言で、Dim re As Long としていますが、Dim re As VbMsgBoxResult
 VbMsgBoxResult型で宣言しておくこともできます

スポンサーリンク

まとめ(おわりに)

くるみこ
くるみこ

は~い! MsgBox 関数の説明はここで終了です(^^)/
理解できましたか?これは良く使うのでしっかり覚えてくださいね!

くるみこ
くるみこ

では、次回は MsgBoxに似ている InputBox について解説します!
それまで準備しますので少し待っていてね(^^)/
できれば、予習しておいてね!

はい! よくわかりました(^^)文字列の改行についても理解できました。
さっそく使ってみたいと思います(^^ゞ
InputBox ですか? わかりました。自習してみます(^^;

まとめと感想など

・MsgBox関数の使い方がわかりました
ボタンやアイコンの定数についてや戻り値の使い方がわかりました
・文字列の改行に使用するには定数を使うことがわかりました

マクロ(VBA)を実行する際は必ずバックアップを取ってから行ってください
・マクロ(VBA)は実行後にファイルを保存すると元に戻すことはできません!
・実行後にファイルを保存せず終了すれば、実行前に戻すことができます!


ブログランキングに参加しています(^^)応援よろしくお願いしますm(_ _)m

今後の記事について

今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
当面は「初心者向けマクロVBA」の記事を継続して書いていきます

【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう現在検討中です
・その他雑記的に「小ネタなどいろいろ」・・・・・
・今後の記事にもご期待ください(^^)/

記事のサンプルファイルをダウンロードできます

今回の記事のサンプルをダウンロードできるようにしています
過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください

スポンサーリンク

スポンサーリンク