エクセルVBAで使用するコードの備忘録。VBAでメッセージボックスを表示するコード。メッセージボックスの表示内容のカスタマイズ、ユーザーによるボタン操作の結果を取得する方法について説明します。
メッセージボックスって?
とりあえず、メッセージボックスと言われてピンとこない方のために、イメージ画像を載せておきます。VBAを使えば簡単に下記のようなウィンドウを表示し、ユーザーからの操作を受け付けることができます。
MsgBox関数
VBAでメッセージボックスを表示するには、MsgBox関数を利用します。MsgBox関数に与える引数はいろいろ選択できますが、下記のように「タイトル」・「プロンプト(メッセージ本文)」・「ボタン」の3つを指定するようにしておけばOKです(MsgBox関数の利用方法の詳細はマイクロソフトのこちらのページに詳しいです)。
VBA上では、MsgBox関数が実行されるとユーザがメッセージボックスのボタンを押すなどしてメッセージボックスの処理が終わるまではコードの処理は先に進みません。
MsgBox関数は戻り値としてユーザーがクリックしたボタンを表す整数を返します。ユーザーがクリックしたボタンによって処理を分岐させる場合には、MsgBox関数の戻り値を取得して、その値によってIF関数などで処理を分けて記述します。
MsgBox関数の書式
[戻り値] = MsgBox("[Prompt]", [Button], "[Title]")
ボタンとアイコン
メッセージボックスでは表示するボタンとアイコンを指定することができます。指定する場合は、各ボタン・アイコンを示す整数をMsgBox関数の引数である「Button」に与えます。ボタンとアイコンを同時に指定する場合は、ボタンを示す整数とアイコンを示す整数の値を足し算して「Button」引数に与えます(サンプルコード参照)。
ボタンの種類
定数 | 値 | 説明 |
vbOKOnly | 0 | 「OK」 |
vbOKCancel | 1 | 「OK」・「キャンセル」 |
vbAbortRetryIgnore | 2 | 「中止」・「再試行」・「無視」 |
vbYesNoCancel | 3 | 「はい」・「いいえ」・「キャンセル」 |
vbYesNo | 4 | 「はい」・「いいえ」 |
vbRetryCancel | 5 | 「再試行」・「キャンセル」 |
アイコンの種類
定数 | 値 | 説明 |
vbCritical | 16 | 重大なメッセージ(赤丸に×) |
vbQuestion | 32 | 警告クエリ(青丸に?) |
vbExclamation | 48 | 警告メッセージ(黄三角に!) |
vbInformation | 64 | 情報メッセージ(青丸に!) |
サンプルコード
下記のサンプルコードでは、「タイトル」・「メッセージ」・「ボタン」・「アイコン」の4つをカスタマイズして表示するようにしてあります。後続の処理でユーザーのボタン操作の結果を使用することを考え、戻り値を受け取るようにしてあります(が使わなければもちろん不要です)。
なお、コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。
Public Sub MsgboxTest()
'--- MsgBoxの戻り値 ---'
Dim msgbox_ret As Long
'--- 引数の設定 ---'
Dim title_str As String
Dim message_str As String
Dim button_long As Long
Dim icon_long As Long
title_str = "[タイトル]"
message_str = "[メッセージ本文]"
button_long = [ボタン定数]
icon_long = [アイコン定数]
'--- メッセージボックスを表示 ---'
msgbox_ret = MsgBox(message_str, button_long + icon_long, title_str)
End Sub