MsgBoxとは
MsgBoxとは、Excelでメッセージボックスを表示するのに用いられるVBA関数です。この関数の引数に指定したメッセージは次のように表示されます。
MsgBoxの基本的な使い方
MsgBox関数でメッセージを指定することでメッセージボックスを表示させるには下記のコードを実行します。
【基本構文】
MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])
引数は、最大で5つです。
-
prompt(必須)
表示するメッセージを指定します。
-
buttons(省略可能)
メッセージボックスに表示されるボタンやアイコンの種類を指定します。
-
title(省略可能)
メッセージボックスのタイトルバーに表示されるテキストを指定します。
-
helpfile, context(省略可能)
ヘルプファイルのパスを指定する「helpfile」を設定する場合は、ヘルプファイル内のコンテキスト番号を設定する「context」も必ず指定する必要があります。
実際のコードを見ましょう。
【実行コード】
Sub Test()
MsgBox "メッセージボックスです。"
End Sub
【実行結果】
上記コードを実行することで、[OK]ボタンが1つあるメッセージボックスが表示されます。
また、このMsgBox関数は、メッセージの表示以外にもさまざまな使い方ができます。
【パターン別】MsgBoxの使い方
タイトルの設定方法
メッセージボックスのタイトルを設定するには、引数Titleにタイトル名を指定します。
【実行コード】
Sub Test()
MsgBox "メッセージボックスです。", Title:="タイトルです。"
End Sub
【実行結果】
このようにタイトルを変更できます。
ボタンの設定方法
メッセージボックスに表示させるボタンの種類を指定するには引数Buttonsに下記の表から種類を指定します。
ボタンの種類
定数 | 値 | 説明 |
---|---|---|
vbOKOnly | 0 | [OK]ボタンのみを表示する |
vbOKCancel | 1 | [OK]ボタンと[キャンセル]ボタンを表示する |
vbAbortRetryIgnore | 2 | [中止]、[再試行]、[無視]の3つのボタンを表示する |
vbYesNoCancel | 3 | [はい]、[いいえ]、[キャンセル]の3つのボタンを表示する |
vbYesNo | 4 | [はい]ボタンと[いいえ]ボタンを表示する |
vbRetryCancel | 5 | [再試行]ボタンと[キャンセル]ボタンを表示する |
【基本形】
MsgBox "表示するメッセージ", Buttons:=ボタンの種類を示す定数または値
【実行コード】
Sub Test()
MsgBox "メッセージボックスです。", Buttons:=vbRetryCancel
End Sub
【実行結果】
このようにボタンの種類を変更できます。用途ごとに使い分けましょう。
ただ、こちらについては押すボタンによって処理を変える必要があるため、後ほど紹介します。
アイコンの設定方法
メッセージボックスにアイコンを表示させる標準アイコンが用意されています。メッセージボックスに標準アイコンを表示させるには引数Buttonsに定数を指定します。
標準アイコン
種類 | 見た目 | 定数 | 値 | 説明 |
---|---|---|---|---|
エラーアイコン | vbCritical | 16 | エラーメッセージボックスで使用する | |
疑問符アイコン | vbQuestion | 32 | 問い合わせメッセージボックスで使用する | |
警告アイコン | vbExclamation | 48 | 警告メッセージボックスで使用する | |
情報アイコン | vbInformation | 64 | 情報メッセージボックスで使用する |
【実行コード】
Sub Test()
MsgBox "メッセージボックスです。", Buttons:=vbInformation
End Sub
【実行結果】
このようにアイコンを表示できます。用途ごとに使い分けましょう。
このように引数Buttonsを設定することでボタンの種類の変更やアイコンの追加ができます。
選択ボタンによる処理の分岐方法
メッセージボックスでは、ボタンが表示されるのでユーザと対話するように処理を進められます。ユーザが選択したボタンによって処理を変える方法を紹介します。
選択によって処理を変える方法
MsgBox関数の戻り値を使用することで、ユーザが選択したボタンによって処理を変えられます。MsgBoxの戻り値を代入する際、VbMsgBoxResult列挙型を使用します。VbMsgBoxResult列挙型には、下記の表のように、押されたボタンに対応する定数が代入されます。
ボタンの種類に対応する戻り値
ボタンの種類によって戻り値を判別する必要があります。ボタンの種類と戻り値を設定することでさまざまな処理の分岐が可能になります。
定数 | 値 | 説明 |
---|---|---|
vbOK | 1 | [OK]ボタンがクリックされたことを指す |
vbCancel | 2 | [キャンセル]ボタンがクリックされたことを指す |
vbAbort | 3 | [中止]ボタンがクリックされたことを指す |
vbRetry | 4 | [再試行]ボタンがクリックされたことを指す |
vbIgnore | 5 | [無視]ボタンがクリックされたことを指す |
vbYes | 6 | [はい]ボタンがクリックされたことを指す |
vbNo | 7 | [いいえ]ボタンがクリックされたことを指す |
【おさらい】ボタンの種類
定数 | 値 | 説明 |
---|---|---|
vbOKOnly | 0 | [OK]ボタンのみを表示する |
vbOKCancel | 1 | [OK]ボタンと[キャンセル]ボタンを表示する |
vbAbortRetryIgnore | 2 | [中止]、[再試行]、[無視]の3つのボタンを表示する |
vbYesNoCancel | 3 | [はい]、[いいえ]、[キャンセル]の3つのボタンを表示する |
vbYesNo | 4 | [はい]ボタンと[いいえ]ボタンを表示する |
vbRetryCancel | 5 | [再試行]ボタンと[キャンセル]ボタンを表示する |
(例)[はい]/[いいえ]ボタンで処理を分岐する
たとえば、[はい][いいえ]で処理を分岐させる場合、引数「Buttons」に定数「vbYesNo」を用います。
【実行コード】
Sub Test()
Dim rslt As VbMsgBoxResult
rslt = MsgBox("これはメッセージボックスでしょうか?", Buttons:=vbYesNo)
If rslt = vbYes Then
MsgBox "正解です。"
Else
MsgBox "不正解です。"
End If
End Sub
【実行結果】
【「はい」を選択した場合】
【「いいえ」を選択した場合】
このように、ユーザの選択するボタンによって処理が変わります。この処理は、ソフトウェア開発において必須といえます。
改行方法
MsgBox関数で改行するには「vbCrLf」(改行コード)を&で挟んで文字列の間に挿入します。
【実行コード】
Sub Test()
MsgBox "メッセージボックスです。" & vbCrLf & "改行できます。"
End Sub
【実行結果】
改行コードにはこのほかにもいくつか存在します。用途によって使い分ける必要があります。
文字列と変数の値を連結して表示させる方法
文字列と変数の値を連結して表示させるには次のように記述します。
【基本形】
"連結する文字列" & 連結する変数の値
【実行コード】
Sub Test()
Dim num As Integer
num = 10
Dim str As String
str = "変数の値は" & num & "です。"
MsgBox str
End Sub
【実行結果】
【応用】ボタンの種類とアイコンを同時に記述する方法
応用として、問い合わせメッセージボックスで[はい]/[いいえ]ボタンを表示し、選択ボタンによって処理を分岐させる仕様にします。
【実行コード】
Sub Test()
Dim rslt As VbMsgBoxResult
rslt = MsgBox("これはメッセージボックスでしょうか?", Buttons:=vbYesNo+ vbQuestion)
If rslt = vbYes Then
MsgBox "正解です。"
Else
MsgBox "不正解です。"
End If
End Sub
ボタンとアイコンを組み合わせる場合、上記のように引数Buttonsに定数どうしを「+」でつなげて指定します。
【実行結果】
「MsgBox(“これはメッセージボックスでしょうか?”, Buttons:=vbYesNo+ vbQuestion)」の部分を下記のように
MsgBox("これはメッセージボックスでしょうか?", Buttons:=4 + 32
または
MsgBox("これはメッセージボックスでしょうか?", Buttons:=36
と記述することもできますが、可読性が下がるため、定数を使うのがベターです。
最後に
メッセージボックスは、メッセージを表示するだけでなく、「デバッグで変数値を表示する」といった使い方をはじめとする幅広い用途に利用できます。ぜひ試してみてください。
関連記事
VBAの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、VBAに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。