ExcelVBA ~MsgBox関数を使いこなそう その①~
- ムギ
- 7月1日
- 読了時間: 4分

はじめに
こんにちは。ティーマネジメントのシステム担当ムギです。
ExcelVBAで、ユーザにメッセージを表示したい場合や、
とある条件下においてユーザに処理を進めるかどうか確認したい…といった場合に、
MsgBox関数を使用することはよくあると思います。
そこで、自分の備忘録としての役割もかねて、
ExcelVBAでのMsgBox関数の使い方についてご紹介していきたいと思います。
今回はMsgBox関数の基本内容とユーザにメッセージを伝える目的での使用方法をメインにご紹介します。
ユーザが選んだボタンで分岐する使用方法についてはまた次回に。
MsgBox関数について
MsgBox関数は、ダイアログボックスに指定したメッセージを表示することができます。
アイコンやボタンの種類などを指定することができ、
ユーザがどのボタンをクリックしたかを判定することも可能です。
<Msgbox関数の構文>
MsgBox(メッセージ内容, [ボタン,][タイトル])
○引数の内容
・メッセージ内容:ダイアログボックスに表示するメッセージ
設定必須
※文字列の場合は「”」(ダブルクォーテーション)で囲む
・ボタン:表示させるボタンの種類や、ダイアログボックスのアイコンを指定
何番目のボタンを規定するか、なども指定可能
省略可能(省略すると「OK」が表示)
・タイトル:ダイアログボックスのタイトルバーに表示する文字列
省略可能(省略すると、タイトル名には「Microsoft Excel」が表示)
ボタンとアイコンの種類
引数「ボタン」にはボタンの種類やアイコンの指定が可能です。
複数の定数を指定する場合は定数を「+」でつないで記述します。
ボタンの種類とアイコンの定数は以下の通りです。
<ボタン種類の定数>
・vbOKOnly:「OK」ボタンのみ ※デフォルト
・vbOKCancel:「OK」と「キャンセル」ボタンを表示
・vbAbortRetryIgnore:「中止」「再試行」「無視」の3つのボタンを表示
・vbYesNoCancel:「はい」「いいえ」「キャンセル」の3つのボタンを表示
・vbYesNo:「はい」と「いいえ」ボタンを表示
・vbRetryCancel:「再試行」と「キャンセル」ボタンを表示

※ボタンが複数ある場合に規定のボタンを指定する定数
・vbDefaultButton1:1つ目のボタンが規定
・vbDefaultButton2:2つ目のボタンが規定
・vbDefaultButton3:3つ目のボタンが規定

<アイコンの定数>
・vbCritical:警告メッセージアイコン
・vbQuestion:問い合わせメッセージアイコン
・vbExclamation:注意メッセージアイコン
・vbInformation:情報メッセージアイコン

MsgBox関数でユーザにメッセージを伝える
MsgBox関数でユーザにメッセージを伝える目的での使用の場合、
ユーザがどのボタンを選んだか、ということを取得する必要がないため、
「OK」ボタンの表示のみでよい、ということになります。
なので、ボタンの種類や規定値の設定は不要となります。(デフォルトのままでOK)
ユーザがどのボタンを選んだかという戻り値が必要ない場合、
引数を括弧()で囲まずに記載します。
例えば、VBAで何らかの処理を完了した後に「完了しました。」とメッセージを表示したいとします。
その際、タイトルには「処理完了」、アイコンは「情報メッセージアイコン」を使用します。
これを基本構文に当てはめてみましょう。
戻り値が必要ないため、引数を囲む括弧は省略します。
<構文>
MsgBox(メッセージ内容, [ボタン,][タイトル])
↓
MsgBox “完了しました。” , vbInformation ,“処理完了”
すると、以下のようなメッセージが表示されます。
「OK」を押すとそのままメッセージダイアログボックスが閉じます。

※補足 MsgBox関数内の改行について
MsgBox関数に表示するメッセージが長くなってしまう場合や2文以上ある場合など、
1行で表示すると見づらくなってしまうことがあると思います。
MsgBox関数内では、改行したい位置に定数「vbCrLf」を指定することで改行することができます。
文章と文章を「&」と「vbCrLf」でつないで記述します。
MsgBox "メッセージ" & vbCrLf & "改行したメッセージ"

※VBAで定義されている改行コードを指定する定数はほかにも複数存在。
使用しているOSの種類や使用箇所によって改行コードが異なる。
おわりに
いかがでしたでしょうか。
今回はExcelVBAのMsgBox関数の基本と
ユーザにメッセージを伝えるだけの使用方法についてご紹介しました。
用途に応じて適切な設定をすることで
ユーザに伝えたい意図をはっきりさせることが可能です。
次回はMsgBox関数に表示されるどのボタンをユーザが選択したかによって
処理を分岐する方法についてご紹介したいと思います。
もし何か気になる点などがございましたらお気軽にお問い合わせください。