MsgBoxとは、メッセージを表示する機能と、問合せを行い返事を返す機能がある関数です。
構文:
MsgBox ( prompt [, buttons ] [, title ] [, helpfile ] [, context ] )
- promptは必須です。 メッセージ文字列を指定します。
- buttonsは省略できます。 ボタンやアイコンの種類などを指定します。
- titleは省略できます。 表示されるウィンドウのタイトル文字列を指定します。
- helpfileは省略できます。 ヘルプファイルを識別する文字列を指定します。(あまり使用しません)
- contextは省略できます。 ヘルプコンテキスト番号を指定します。(あまり使用しません)
ボタンの種類
vbOKOnly |
0 |
[OK] ボタン |
vbOKCancel |
1 |
[OK] 、 [キャンセル] ボタン |
vbAbortRetryIgnore |
2 |
[中止]、[再試行]、[無視]ボタン |
vbYesNoCancel |
3 |
[はい]、[いいえ]、[キャンセル] ボタン |
vbYesNo |
4 |
[はい]、[いいえ] ボタン |
vbRetryCancel |
5 |
[再試行]、[キャンセル] ボタン |
アイコンの種類
vbCritical |
16 |
警告 |
vbQuestion |
32 |
問合せ |
vbQuestion |
48 |
注意 |
vbInformation |
64 |
情報 |
デフォルトボタン
vbDefaultButton1 |
0 |
第 1 ボタン |
vbDefaultButton2 |
255 |
第 2 ボタン |
vbDefaultButton3 |
512 |
第 3 ボタン |
vbDefaultButton4 |
768 |
第 4 ボタン |
返り値
vbOK |
1 |
OK |
vbCancel |
2 |
キャンセル |
vbAbort |
3 |
中止 |
vbRetry |
4 |
再試行 |
vbIgnore |
5 |
無視 |
vbYes |
6 |
はい |
vbNo |
7 |
いいえ |
● メッセージを表示する
下がもっともシンプルなMsgBoxの使い方です。
引数promptのみ指定しています。
Sub MyMsgBox()
Dim i As Long
i = 325
MsgBox "変数iの値は、" & i & "です。"
End Sub
実行結果です。
引数Titleを省略しているので、使用しているアプリケーションの名前が表示されています。
● 問合せを行う
引数のprompt・buttons・titleを指定しています。
返り値は
IF文で判定しています。
vbYesNoCancel + vbQuestion + vbDefaultButton3で、ボタンの種類にvbYesNoCancelを、アイコンの種類にvbQuestionを、デフォルトボタンにvbDefaultButton3を指定しています。
このように引数buttonsは複数の定数を「+」で組み合わせて使用します。
Sub MyMsgBox()
Dim nRet As Long
nRet = MsgBox("よろしいでしょうか?", vbYesNoCancel + vbQuestion + vbDefaultButton3, "問合せ")
If nRet = vbOK Then
MsgBox "OKボタンが押されました。"
ElseIf nRet = vbNo Then
MsgBox "NOボタンが押されました。"
Else
MsgBox "CANCELボタンが押されました。"
End If
End Sub
実行結果です。
ボタンは「はい・いいえ・キャンセル」から選択できます。
アイコンは問合せが表示されています。
デフォルトボタンは、初期状態でフォーカスがあるボタンを指定します。このままEnterキーを押すと採用されるボタンになります。
第3ボタンを指定しているので[キャンセル]がアクティブになっています。
● メッセージを改行する方法
メッセージの改行位置に「vbCrLf」か「vbNewLine」を挿入します。
VBA入力時、文字列が長い場合は「_」を使い複数行にすることができます。
Sub MyMsgBox()
Dim i As Long
i = 325
MsgBox "変数iの値は、" & vbCrLf & i & "です。"
End Sub
実行結果です。
メッセージが改行され2行になっています。