教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 基本操作】MsgBox関数の使い方を教えて!

構文

構文は以下のとおりです。

MsgBox(メッセージ内容, [ボタンの種類], [タイトル], [ヘルプファイル], [コンテキストID])

解説

MsgBoxとは、「Message Box(メッセージボックス)」の略称です。ユーザーに対してメッセージを表示させることができます。例えば、データが保存されていない場合に警告メッセージを表示させたり、確認メッセージを表示させてから処理を進めたりすることができます。また、MsgBoxは戻り値を返します。戻り値の詳細を以下で紹介します。

引数 指定 内容
メッセージ内容 必須 表示させたいメッセージを指定します。
ボタンの種類 省略可 ボタンの表示方法を指定します。指定しない場合はOKボタンが表示されます。ボタンの種類を以下で紹介します。
タイトル 省略可 メッセージボックスのタイトルを指定します。指定しない場合は「Microsoft Excel」がタイトルになります。
ヘルプファイル 省略可 ヘルプファイルのパスを指定します。
コンテキストID 省略可 ヘルプファイル内のコンテキストIDを指定します。

ボタンの種類には以下の設定値が指定できます。

定数 内容
vbOKOnly 0 [OK]ボタンのみを表示します。
vbOKCancel 1 [OK]ボタンと[キャンセル]ボタンを表示します。
vbAbortRetryIgnore 2 [中止]、[再試行]、および[無視]の3つのボタンを表示します。
vbYesNoCancel 3 [はい]、[いいえ]、および[キャンセル]の3つのボタンを表示します。
vbYesNo 4 [はい]ボタンと[いいえ]ボタンを表示します。
vbRetryCancel 5 [再試行]ボタンと[キャンセル]ボタンを表示します。
vbCritical 16 警告メッセージアイコンを表示します。
vbQuestion 32 問い合わせメッセージアイコンを表示します。
vbExclamation 48 注意メッセージアイコンを表示します。
vbInformation 64 情報メッセージアイコンを表示します。
vbDefaultButton1 0 第1ボタンを標準ボタンにします。
vbDefaultButton2 256 第2ボタンを標準ボタンにします。
vbDefaultButton3 512 第3ボタンを標準ボタンにします。

ボタンの戻り値については以下の通りです。

定数 内容
vbOK 1 [OK]ボタンが押された。
vbCancel 2 [キャンセル]ボタンが押された。
vbAbort 3 [中止]ボタンが押された。
vbRetry 4 [再試行]ボタンが押された。
vbIgnore 5 [無視]ボタンが押された。
vbYes 6 [はい]ボタンが押された。
vbNo 7 [いいえ]ボタンが押された。

使用例

MsgBox "処理が終了しました。"
MsgBox "処理が終了しました。" & vbLf & "(正常終了です)"
MsgBox "処理が終了しました。", vbOKOnly, "メッセージ"

使い方

具体的な使い方を紹介します。

例1:OKボタンを表示する場合

以下のコードを記述することで、メッセージボックスに「保存していいですか?」というメッセージが表示されます。OKボタンが表示され、OKボタンをクリックすると、処理が続行されます。

MsgBox "保存していいですか?"

例2:OKキャンセルボタンを表示する場合

以下のコードを記述することで、メッセージボックスに「保存していいですか?」というメッセージが表示され、OKキャンセルボタンが表示されます。OKボタンをクリックすると、処理が続行されます。一方、キャンセルボタンをクリックすると、処理が中止されます。

If MsgBox("保存していいですか?", vbOKCancel) = vbOK Then
    'OKボタンがクリックされた場合の処理
    'ここに処理を記述します。
Else
    'キャンセルボタンがクリックされた場合の処理
    'ここに処理を記述します。
End If

例3:Yes Noキャンセルボタンを表示する場合

以下のコードを記述することで、メッセージボックスに「本当に削除してもよろしいですか?」というメッセージが表示され、Yes Noキャンセルボタンが表示されます。Yesボタンをクリックすると、処理が続行されます。Noボタンをクリックすると、処理が中止されます。キャンセルボタンをクリックすると、メッセージボックスが閉じます。

Select Case MsgBox("本当に削除してもよろしいですか?", vbYesNoCancel)
    Case vbYes
        'Yesボタンがクリックされた場合の処理
        'ここに処理を記述します。
    Case vbNo
        'Noボタンがクリックされた場合の処理
        'ここに処理を記述します。
    Case vbCancel
        'キャンセルボタンがクリックされた場合の処理
        'ここに処理を記述します。
End Select

プログラミング例

以下に、プログラミング例を紹介します。

例1:数値を入力させる

以下のコードを記述することで、メッセージボックスに「数値を入力してください。」というメッセージが表示され、ユーザーからの入力を受け付けます。入力された値が数値であるかどうかをチェックし、数値であれば、入力された値を2倍した値を表示します。数値でなければ、「数値を入力してください。」というメッセージが表示されます。

Dim inputValue As Variant
inputValue = InputBox("数値を入力してください。")
If IsNumeric(inputValue) Then
    MsgBox inputValue * 2
Else
    MsgBox "数値を入力してください。"
End If

例2:範囲を指定してデータを入力する

以下のコードを記述することで、メッセージボックスに「データを入力してください。」というメッセージが表示され、ユーザーからの入力を受け付けます。入力された値をA1セルに、入力された値の2倍をB1セルに、入力された値の3倍をC1セルに、それぞれ入力します。

Dim inputValue As Variant
inputValue = InputBox("データを入力してください。")
Range("A1").Value = inputValue
Range("B1").Value = inputValue * 2
Range("C1").Value = inputValue * 3
MsgBox "データを入力しました。"

例3:複数の条件に応じた処理

以下のコードを記述することで、メッセージボックスに「点数を入力してください。」というメッセージが表示され、ユーザーからの入力を受け付けます。入力された値が数値であるかどうかをチェックし、数値でなければ、「数値を入力してください。」というメッセージが表示されます。入力された値が90以上であれば、「優秀です。」というメッセージが、80以上90未満であれば、「良いです。」というメッセージが、それ以外の場合は「頑張りましょう。」というメッセージが表示されます。

Dim inputValue As Variant
inputValue = InputBox("点数を入力してください。")
If IsNumeric(inputValue) Then
    Select Case inputValue
        Case Is >= 90
            MsgBox "優秀です。"
        Case Is >= 80
            MsgBox "良いです。"
        Case Else
            MsgBox "頑張りましょう。"
    End Select
Else
    MsgBox "数値を入力してください。"
End If

まとめ

MsgBoxは、処理を中断してメッセージを表示する際に非常に便利なツールであり、様々な種類のメッセージボックスを表示することができます。また、MsgBoxを使ったプログラミング例をいくつか紹介しましたが、これらはあくまでも参考として、自分で使い方を工夫して使ってみることが大切です。是非活用してください。