MsgBoxとは、「Message Box(メッセージボックス)」の略称です。ExcelVBAの機能の一つであり、ユーザーに対してメッセージを表示させることができます。例えば、データが保存されていない場合に警告メッセージを表示させたり、確認メッセージを表示させてから処理を進めたりすることができます。
構文
構文は以下のとおりです。
解説
●メッセージ内容:表示させたいメッセージを指定します。
●ボタンの種類:ボタンの表示方法を指定します。省略可能で、指定しない場合は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ボタンをクリックすると、処理が続行されます。
例2:OKキャンセルボタンを表示する場合
以下のコードを記述することで、メッセージボックスに「保存していいですか?」というメッセージが表示され、OKキャンセルボタンが表示されます。OKボタンをクリックすると、処理が続行されます。一方、キャンセルボタンをクリックすると、処理が中止されます。
'OKボタンがクリックされた場合の処理
'ここに処理を記述します。
Else
'キャンセルボタンがクリックされた場合の処理
'ここに処理を記述します。
End If
例3:Yes Noキャンセルボタンを表示する場合
以下のコードを記述することで、メッセージボックスに「本当に削除してもよろしいですか?」というメッセージが表示され、Yes Noキャンセルボタンが表示されます。Yesボタンをクリックすると、処理が続行されます。Noボタンをクリックすると、処理が中止されます。キャンセルボタンをクリックすると、メッセージボックスが閉じます。
Case vbYes
'Yesボタンがクリックされた場合の処理
'ここに処理を記述します。
Case vbNo
'Noボタンがクリックされた場合の処理
'ここに処理を記述します。
Case vbCancel
'キャンセルボタンがクリックされた場合の処理
'ここに処理を記述します。
End Select
プログラミング例
MsgBoxを使ったプログラミング例をご紹介します。
例1:数値を入力させる
以下のコードを記述することで、メッセージボックスに「数値を入力してください。」というメッセージが表示され、ユーザーからの入力を受け付けます。入力された値が数値であるかどうかをチェックし、数値であれば、入力された値を2倍した値を表示します。数値でなければ、「数値を入力してください。」というメッセージが表示されます。
inputValue = InputBox("数値を入力してください。")
If IsNumeric(inputValue) Then
MsgBox inputValue * 2
Else
MsgBox "数値を入力してください。"
End If
例2:範囲を指定してデータを入力する
以下のコードを記述することで、メッセージボックスに「データを入力してください。」というメッセージが表示され、ユーザーからの入力を受け付けます。入力された値をA1セルに、入力された値の2倍をB1セルに、入力された値の3倍をC1セルに、それぞれ入力します。
inputValue = InputBox("データを入力してください。")
Range("A1").Value = inputValue
Range("B1").Value = inputValue * 2
Range("C1").Value = inputValue * 3
MsgBox "データを入力しました。"
例3:複数の条件に応じた処理
以下のコードを記述することで、メッセージボックスに「点数を入力してください。」というメッセージが表示され、ユーザーからの入力を受け付けます。入力された値が数値であるかどうかをチェックし、数値でなければ、「数値を入力してください。」というメッセージが表示されます。入力された値が90以上であれば、「優秀です。」というメッセージが、80以上90未満であれば、「良いです。」というメッセージが、それ以外の場合は「頑張りましょう。」というメッセージが表示されます。
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を使ったプログラミング例をいくつか紹介しましたが、これらはあくまでも参考として、自分で使い方を工夫して使ってみることが大切です。