VBAのメッセージ表示は、ユーザーに情報を提供したり、入力を促したり、警告を出したりするために使用されます。VBAでメッセージを表示するための基本的な方法は、MsgBox関数を使うことです。
MsgBox関数の基本構文
MsgBoxの構文
MsgBox(prompt [, buttons] [, title] [, helpfile, context])
- prompt: メッセージボックスに表示するテキスト。
- buttons (省略可能): メッセージボックスに表示するボタンの種類やアイコンを指定します。
- title (省略可能): メッセージボックスのタイトルバーに表示するテキスト。
- helpfile, context (省略可能): ヘルプファイルの名前とコンテキスト番号を指定します。
基本的な使用例
単純なメッセージを表示する例を見てみましょう。
Sub ShowSimpleMessage()
MsgBox "こんにちは、世界!"
End Sub
このコードを実行すると、「こんにちは、世界!」というメッセージが表示されます。
ボタンとアイコンの指定
MsgBox関数の第二引数でボタンとアイコンを指定することができます。例えば、「OK」ボタンと「キャンセル」ボタンを表示する場合の例を見てみましょう。
Sub ShowMessageWithButtons()
MsgBox "操作を続けますか?", vbOKCancel
End Sub
このコードを実行すると、「操作を続けますか?」というメッセージと共に「OK」ボタンと「キャンセル」ボタンが表示されます。
第二引数 | 説明 | 図 |
---|---|---|
vbOKOnly | OKボタンだけを表示します(デフォルト)。 | |
vbOKCancel | OKボタンとキャンセルボタンを表示します。 | |
vbAbortRetryIgnore | 中止、再試行、無視の各ボタンを表示します。 | |
vbYesNoCancel | はい、いいえ、キャンセルの各ボタンを表示します。 | |
vbYesNo | はい、いいえの各ボタンを表示します。 | |
vbRetryCancel | 再試行、キャンセルの各ボタンを表示します。 | |
vbCritical | クリティカルアイコンを表示します。 | |
vbQuestion | 質問アイコンを表示します。 | |
vbExclamation | 警告アイコンを表示します。 | |
vbInformation | 情報アイコンを表示します。 |
タイトルの指定
MsgBox関数の第三引数でメッセージボックスのタイトルを指定することができます。
Sub ShowMessageWithTitle()
MsgBox "これはサンプルメッセージです。", vbInformation, "サンプルタイトル"
End Sub
このコードを実行すると、「これはサンプルメッセージです。」というメッセージと共に「サンプルタイトル」というタイトルのメッセージボックスが表示されます。
ユーザーの応答を取得する
MsgBox関数は、ユーザーがクリックしたボタンに応じて結果を返します。これを使って、ユーザーの応答に基づいて異なる処理を行うことができます。
Sub ShowMessageWithResponse()
Dim response As VbMsgBoxResult
response = MsgBox("ファイルを保存しますか?", vbYesNo + vbQuestion, "保存の確認")
If response = vbYes Then
MsgBox "ファイルを保存しました。", vbInformation, "確認"
Else
MsgBox "ファイルの保存をキャンセルしました。", vbInformation, "確認"
End If
End Sub
このコードを実行すると、「ファイルを保存しますか?」というメッセージと共に「はい」ボタンと「いいえ」ボタンが表示されます。
ユーザーが「はい」をクリックすると、「ファイルを保存しました。」というメッセージが表示されます。
ユーザーが「いいえ」をクリックすると、「ファイルの保存をキャンセルしました。」というメッセージが表示されます。
vbAbortRetryIgnoreオプションを使用した例
vbAbortRetryIgnoreオプションを使用したMsgBox関数の例を示します。このオプションでは「中止(Abort)」、「再試行(Retry)」、「無視(Ignore)」の3つのボタンが表示されます。ユーザーがクリックしたボタンに応じて異なる処理を行うサンプルコードを以下に示します。
Sub ShowAbortRetryIgnoreMessage()
Dim response As VbMsgBoxResult
response = MsgBox("処理に失敗しました。どうしますか?", vbAbortRetryIgnore + vbExclamation, "エラー")
If response = vbAbort Then
MsgBox "処理を中止しました。", vbInformation, "中止"
ElseIf response = vbRetry Then
MsgBox "処理を再試行します。", vbInformation, "再試行"
' ここに再試行の処理を記述します。
ElseIf response = vbIgnore Then
MsgBox "エラーを無視して続行します。", vbInformation, "無視"
' ここに無視して続行する処理を記述します。
End If
End Sub
このように、MsgBox関数のvbAbortRetryIgnoreオプションを使うことで、ユーザーがどのボタンをクリックしたかに応じて適切な処理を行うことができます。
MsgBox関数の戻り値
if文などで条件として使う場合はMsgBox関数の戻り値を利用します。
上記で説明した「ユーザーの応答を取得する」で使用したりします。
定数 | 値 | 説明 |
---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | キャンセル |
vbAbort | 3 | 中止 |
vbRetry | 4 | 再試行 |
vbIgnore | 5 | 無視 |
vbYes | 6 | はい |
vbNo | 7 | いいえ |
これらの基本を押さえておくと、VBAでのメッセージ表示がスムーズに行えるようになります。具体的な例を試しながら学ぶことで、さらに理解が深まるでしょう。