教えて!ExcelVBA!

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

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

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

構文

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

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

解説

●メッセージ内容:表示させたいメッセージを指定します。
●ボタンの種類:ボタンの表示方法を指定します。省略可能で、指定しない場合はOKボタンが表示されます。具体的には以下の4種類があります。

vbOKOnly OKボタンのみを表示
vbOKCancel OKボタンとキャンセルボタンを表示
vbYesNo YesボタンとNoボタンを表示
vbYesNoCancel Yesボタン、Noボタン、キャンセルボタンを表示

また、ボタンがクリックされた場合の戻り値は、以下のような定数で設定されています。

vbOK OKボタンがクリックされた場合の戻り値
vbCancel キャンセルボタンがクリックされた場合の戻り値
vbYes Yesボタンがクリックされた場合の戻り値
vbNo Noボタンがクリックされた場合の戻り値

●タイトル:メッセージボックスのタイトルを指定します。省略可能で、指定しない場合は「Microsoft Excel」がタイトルになります。
●ヘルプファイル:ヘルプファイルのパスを指定します。省略可能です。
●コンテキストID:ヘルプファイル内のコンテキストIDを指定します。省略可能です。

使い方

具体的にMsgBoxの使い方を見ていきましょう。

例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

プログラミング例

MsgBoxを使ったプログラミング例をご紹介します。

例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

まとめ

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