Excelで「VBA」プログラミングの基礎(MsgBox(メッセージボックス)編)

VBAの基礎

どうも!Komugiです

MsgBox(メッセージボックス)でメッセージを表示する考え方は、

プログラミングを行う際によく利用する手法です。

ご自分のスキルにしていただいて、

ステップアップしていただけると嬉しいです!

「MsgBox(メッセージボックス)」について学習しよう!

がんばるぞ〜!

「MsgBox(メッセージボックス)」とは

VBAで利用されるMsgBox(メッセージボックス)は、利用者に視覚的に情報を伝える、または利用者から入力情報を受け取るためのメッセージの一つです。

基本の構文

MsgBox "メッセージ", ボタン + アイコン + デフォルト, "タイトル"

基本構文に表示したい箇所を当てはめて、プログラムコードに記載します。
中でもメッセージ”」部分は必須項目ですが、他の項目は必須ではありません。
それでは詳しく見ていきましょう。

“メッセージ”

シンプルにメッセージだけを表示する場合のサンプルコードです。

Sub test_Msg1()
 MsgBox “Hello!”
End Sub

“メッセージ”」と「OK」ボタンが表示されます。

MsgBox(メッセージボックス)に変数を利用して「“メッセージ”」を表示させることも可能です。

変数を利用して、メッセージを表示する場合のサンプルコードです。

Sub test_Msg2()
 Dim i As Long
 i = 5
 MsgBox “リンゴは” & i & “個あります”
End Sub

変数「i」に「5」を代入して、「“メッセージ”」を表示させると以下のように表示します。
動的に「“メッセージ”」を表示されられるため、よく利用する手法です。

“メッセージ”」の内容が長くなった場合、改行して見やすくすることも可能です。
※約1,024文字が表示可能な実用上の制限となっています。

改行したい所に「vbCrLf」を入れることで、文字の好きな位置で改行します。
以下がサンプルコードです。

Sub test_Msg3()
 MsgBox “Hello” & vbCrLf & “私の名前はKomugiです。”
End Sub

「Hello」と「私の名前はKomugiです。」が改行されて表示します。
「vbCrLf」の前後には「半角アンド」と「半角空白」が必要です。

モジュールに書くMsgBox(メッセージボックス)のコードが長くなりすぎた場合、コードを改行して書くことも出来ます。

モジュール内のコードを、見やすく表示するためのサンプルコードです。

Sub test_Msg4()
 MsgBox “Hello” & vbCrLf _
 & “私の名前はKomugiです。” & vbCrLf _
 & “こんな風に書くことも可能です!”
End Sub

改行コードの後に「& _」という風に、「半角アンド」と「半角空白」と「半角アンダーバー」を入れることで、モジュール内のコード自体も見やすく書くことが出来ます。

ボタン

ボタンとはMsgBox(メッセージボックス)に表示する確認のための「選択肢」のことです。
色んなボタンがあるので、代表的なボタンのサンプルコードをご紹介致します。

「OK」ボタン

「OK」ボタンのサンプルコードです。
“メッセージ”」の後ろに「, vbOKOnly」と記載します。

Sub test_Msg5()
 MsgBox “OKボタン”, vbOKOnly
End Sub

結果は「“メッセージ”」だけ書く時と同じ表示になります。

「OK」&「キャンセル」ボタン

「OK」と「キャンセル」ボタンのサンプルコードです。
“メッセージ”」の後ろに「, vbOKCancel」と記載します。

Sub test_Msg6()
 MsgBox “OK & キャンセルボタン”, vbOKCancel
End Sub

結果は「OK」と「キャンセル」ボタンの二つが表示されます。

「中止」&「再試行」&「無視」ボタン

「中止」と「再試行」と「無視」ボタンのサンプルコードです。
“メッセージ”」の後ろに「, vbAbortRetryIgnore」と記載します。

Sub test_Msg7()
 MsgBox “中止 & 再試行 & 無視ボタン”, vbAbortRetryIgnore
End Sub

結果は「中止」と「再試行」と「無視」ボタンの三つが表示されます。

「はい」&「いいえ」&「キャンセル」ボタン

「はい」と「いいえ」と「キャンセル」ボタンのサンプルコードです。
“メッセージ”」の後ろに「, vbYesNoCancel」と記載します。

Sub test_Msg8()
 MsgBox “はい & いいえ & キャンセルボタン”, vbYesNoCancel
End Sub

結果は「はい」と「いいえ」と「キャンセル」ボタンの三つが表示されます。

「はい」&「いいえ」ボタン

「はい」と「いいえ」ボタンのサンプルコードです。
“メッセージ”」の後ろに「, vbYesNo」と記載します。

Sub test_Msg9()
 MsgBox “はい & いいえボタン”, vbYesNo
End Sub

結果は「はい」と「いいえ」とボタンの二つが表示されます。

「再試行」&「キャンセル」ボタン

「再試行」と「キャンセル」ボタンのサンプルコードです。
“メッセージ”」の後ろに「, vbRetryCancel」と記載します。

Sub test_Msg10()
 MsgBox “再試行 & キャンセルボタン”, vbRetryCancel
End Sub

結果は「再試行」と「キャンセル」とボタンの二つが表示されます。

アイコン

VBAのメッセージボックスには4種類のアイコンがあり、表示するアイコンを選択することができます。

情報」アイコン

「情報」アイコンのサンプルコードです。
“メッセージ”」の後ろに「, vbInformation」と記載します。

Sub test_Msg11()
 MsgBox “処理が完了しました。”, vbInformation
End Sub

「i」のマークが表示され、一般的な情報を表示する時に使用します。

疑問符」アイコン

「疑問符」アイコンのサンプルコードです。
“メッセージ”」の後ろに「, vbQuestion」と記載します。

Sub test_Msg12()
 MsgBox “この操作を続けますか?”, vbQuestion
End Sub

「?」のマークが表示されます。

警告」アイコン

警告」アイコンのサンプルコードです。
“メッセージ”」の後ろに「, vbExclamation」と記載します。

Sub test_Msg13()
 MsgBox “入力内容を確認してください。”, vbExclamation
End Sub

三角の中に「!」のマークが表示されます。

「エラー」アイコン

「エラー」アイコンのサンプルコードです。
“メッセージ”」の後ろに「, vbCritical」と記載します。

Sub test_Msg14()
 MsgBox “エラーが発生しました。”, vbCritical
End Sub

「❌」のマークが表示されます。

デフォルト

ボタン表示が「はい」「いいえ」のように2つ、もしくは3つあった場合、最初にどれを選択しておくかを指定することができます。

「はい」と「いいえ」で最初に「はい」を選択する場合

「アイコン」の後ろに「+ vbDefaultButton1」と記載します。

Sub test_Msg15()
 MsgBox “処理を開始しますか?”, vbYesNo + vbQuestion + vbDefaultButton1
End Sub

「はい」が選択された状態になっています。

「はい」と「いいえ」で最初に「いいえ」を選択する場合

「アイコン」の後ろに「+ vbDefaultButton2」と記載します。

Sub test_Msg16()
 MsgBox “処理を開始しますか?”, vbYesNo + vbQuestion + vbDefaultButton2
End Sub

「いいえ」が選択された状態になっています。

タイトル

メッセージボックスの上部のタイトルバーに、タイトルを表示させることができます。
タイトルに何も設定しなかった場合、「Microsoft Excel」と表示されます。

Sub test_Msg17()
 MsgBox “Hello!”, , “あいさつ”
End Sub

タイトルバーにタイトルに指定した文字が表示されます。
タイトル表示だけする場合は「ボタン」「アイコン 」「デフォルト」部分は「、」で区切っておきます。

メッセージボックスの活用方法

戻り値の活用方法

「OK」や「キャンセル」を押すことで、どのボタンを押したかを教えてくれることを「戻り値」と言います。
この「戻り値」を使って、処理を分岐させることが可能です。

MsgBox関数の戻り値は以下のとおりです。

定数どのボタンが押されたのか
vbOK1「OK」ボタン
vbCancel2「キャンセル」ボタン
vbAbort3「中止」ボタン
vbRetry4「再試行」ボタン
vbIgnore5「無視」ボタン
vbYes6「はい」ボタン
vbNo7「いいえ」ボタン

では戻り値を使って処理を分岐させましょう!
「リンゴを食べるか食べないか」の処理を分岐させたサンプルコードは以下の通りです。

Sub Sample()
 Dim rc As Integer
 rc = MsgBox(“りんごを食べますか?”, vbYesNo + vbQuestion, “戻り値分岐”)
 If rc = vbYes Then
  MsgBox “食べます”
 Else
  MsgBox “食べません”
 End If
End Sub

結果は以下のとおりです。
「はい」を押した場合は戻り値「6」となり、「食べます」のメッセージが表示され、「いいえ」を押した場合は戻り値が「7」となり、「食べません」のメッセージが表示されます。

どのボタンを押したのか「戻り値」の変数に何が入っているか見たいですよね!
見る方法が3つあります。

方法① コード実行中にカーソルをあてる

「はい」の場合
変数「rc = 6」と戻り値が表示されます。

「いいえ」の場合
変数「rc = 7」と戻り値が表示されます。

方法② メッセージボックスで表示させる

メッセージボックスに変数を表示してもらい、「戻り値」を確認することができます。

「はい」の場合
メッセージボックスに「6」と戻り値が表示されます。

「いいえ」の場合
メッセージボックスに「7」と戻り値が表示されます。

方法③ イミディエイトウィンドウに表示する

Debug.Printを使うとイミディエイトウィンドウに変数の内容を表示することも可能です。

イミディエイトウィンドウがまだ表示されていない場合は「Ctrl」 + 「G」のショートカットで開くか、以下の方法で表示させてください。

イミディエイトウィンドウに変数の値を表示させるサンプルコードです。
「Debug.Print 変数」と記載することで、イミディエイトウィンドウに値が出力されます。

Debug.Print rc

「はい」の場合
イミディエイトウィンドウに「6」と戻り値が表示されます。

「いいえ」の場合
イミディエイトウィンドウに「7」と戻り値が表示されます。

イミディエイトウィンドウで確認する方法はもう一つあります!
コードを実行中に変数に値が入ったことを確認後、イミディエイトウィンドウに直接変数を書いて、「戻り値」の内容を知る方法もあります。

イミディエイトウィンドウに直接書きます。
構文は「半角?」と「半角空白」と「変数」です。

? rc

書くだけでは表示できませんので、変数「rc」の後ろにカーソルをおいてから、「Enter」を押すと、変数に格納されている値が表示されます。

「はい」の場合
イミディエイトウィンドウに「6」と戻り値が表示されます。

「いいえ」の場合
イミディエイトウィンドウに「7」と戻り値が表示されます。

MsgBox(メッセージボックス)のまとめ

VBAのMsgBox(メッセージボックス)を使うと、実行時にお知らせしたいことを簡単に伝えることができます。
例えば、何かを実行した後に「作業が完了しました!」と教えてくれるので、次に何をすればいいか迷わずに済みます。
MsgBox(メッセージボックス)はVBAプログラミングにはなくてはならないもです。
価値の高いスキルを習得することで、転職の選択肢も広がります。
ぜひ、スキルアップと転職活動を並行して進めていきましょう。

最後まで見ていただき有難うございます。引き続きプログラミングの素晴らしさをお伝えさせていただきます!

コメント

タイトルとURLをコピーしました