今回はMsgBoxの使い方についてご説明します。
MsgBoxは画面(ダイアログボックス)にメッセージを表示させる機能です。
また、Yes/Noなどユーザーに処理を選択してもらうなどの使用方法があります。
基本的な方法から、応用的な使い方までご説明します。
1.MsgBoxの使い方
MsgBoxはダイアログボックスにメッセージとボタンを表示して、押されたボタンの結果を数値で返します。
MsgBoxの構文は次のように記述します。
MsgBox Prompt[,Buttons][,Title]
最もシンプルに記述すると次のようになります。
Sub Sample1()
MsgBox "こんにちは"
End Sub
MsgBoxの引数一覧
MsgBoxの引数一覧です。
次にButtonsの定数一覧を記載していますが、表示の種類、アイコンの種類、ボタンの種類と複数あります。
これらを複数選択する場合は次のように記述します。
MsgBox "こんにちは", vbOKOnly + vbCritical
引数 | 省略 | 説明 |
Prompt | 必須 | ダイアログボックスに表示するメッセージを指定します。 |
Buttons | 省略可能 | ダイアログボックスに表示する、ボタンの種類やタイプなどを指定します。 |
Title | 省略可能 | ダイアログボックスのタイトルバーに表示する文字列を指定します。 省略すると「Microsoft Excel」と表示されます。 |
Buttonsの表示するボタンに関する定数一覧
定数 | 値 | 説明 |
vbOKOnly | 0 | [OK]ボタンのみを表示します。 |
vbOKCancel | 1 | [OK]ボタンと[キャンセル]ボタンを表示します。 |
vbAbortRetryIgnore | 2 | [中止]、[再試行]、および[無視]の3つのボタンを表示します。 |
vbYesNoCancel | 3 | [はい]、[いいえ]、および[キャンセル]の3つのボタンを表示します。 |
vbYesNo | 4 | [はい]ボタンと[いいえ]ボタンを表示します。 |
vbRetryCancel | 5 | [再試行]ボタンと[キャンセル]ボタンを表示します。 |
Buttonsのアイコンに関する定数一覧
定数 | 値 | 説明 |
vbCritical | 16 | 警告メッセージアイコンを表示します。 |
vbQuestion | 32 | 問い合わせメッセージアイコンを表示します。 |
vbExclamation | 48 | 注意メッセージアイコンを表示します。 |
vbInformation | 64 | 情報メッセージアイコンを表示します。 |
Buttonsの標準ボタンに関する定数一覧
定数 | 値 | 説明 |
vbDefaultButton1 | 0 | 第1ボタンを標準ボタンにします。 |
vbDefaultButton2 | 256 | 第2ボタンを標準ボタンにします。 |
vbDefaultButton3 | 512 | 第3ボタンを標準ボタンにします。 |
vbDefaultButton4 | 768 | 第4ボタンを標準ボタンにします。 |
押されたボタンの戻り値一覧
定数 | 値 | 説明 |
vbOK | 1 | [OK]ボタンが押された |
vbCancel | 2 | [キャンセル]ボタンが押された |
vbAbort | 3 | [中止]ボタンが押された |
vbRetry | 4 | [再試行]ボタンが押された |
vbIgnore | 5 | [無視]ボタンが押された |
vbYes | 6 | [はい]ボタンが押された |
vbNo | 7 | [いいえ]ボタンが押された |
2.サンプルコード
MsgBoxのサンプルコードです。
最もシンプルなコード
下記コードは「OK」ボタンのみ表示して返り値を使いません。
Sub Sample1()
MsgBox "こんにちは"
End Sub
アイコンを変えるコード
次のコードはアイコンを変えるコードです。
Sub Sample2()
MsgBox "こんにちは", vbInformation
End Sub
メッセージを改行する
「& vbCrLf &」を使用して改行します。
「& vbNewLine &」でも改行する事が可能です。
改行の詳細については「メッセージや文字列を改行する方法」をご覧下さい。
Sub Sample3()
MsgBox "おはよう" & vbCrLf & "こんにちは" & vbCrLf & "こんばんは"
End Sub
Yes/Noのコード
ボタンの種類を「はい/いいえ」にします。
選択したボタンによって処理を分岐します。
「Result」でMsgBoxで選択されたボタンの返り値を受け取り、「If Result = vbYes Then」でYes/Noを分岐しています。
Sub Sample4()
Dim Result As Long
Dim MyStr As String
MyStr = "処理を続けますか?"
Result = MsgBox(MyStr, vbYesNo + vbExclamation)
If Result = vbYes Then
'Yesを選択され場合の処理
MsgBox "処理を継続します。"
Else
'Noを選択された場合の処理
Exit Sub
End If
End Sub