VBAのメッセージ

投稿日: 2024年5月28日

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」ボタンと「キャンセル」ボタンが表示されます。

第二引数説明
vbOKOnlyOKボタンだけを表示します(デフォルト)。
vbOKCancelOKボタンとキャンセルボタンを表示します。
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関数の戻り値を利用します。
上記で説明した「ユーザーの応答を取得する」で使用したりします。

定数説明
vbOK1OK
vbCancel2キャンセル
vbAbort3中止
vbRetry4再試行
vbIgnore5無視
vbYes6はい
vbNo7いいえ

これらの基本を押さえておくと、VBAでのメッセージ表示がスムーズに行えるようになります。具体的な例を試しながら学ぶことで、さらに理解が深まるでしょう。

記事