Excel VBAでメッセージボックス(MsgBox)を使いたいという方、この記事を読むことでメッセージボックスの使い方をマスターすることができます。
メッセージボックスは、以下のような用途で使います。
- エラーが発生したことを伝える
- 処理が完了したことを伝える
メッセージボックスを使うことで、何が起きたのか一目でわかるようになるため、とっても便利な機能です。
また、ユーザーの選択したコマンドごとに処理を変更したりもできます。
今回は、メッセージボックス(MsgBox)の使い方についてご紹介します。
- メッセージボックス(MsgBox)を使いたい
- 戻り値ごとに処理を変更したい
メッセージボックス(MsgBox) 使い方
基本的な使い方
MsgBox (prompt, [, buttons] [, title])
prompt:メッセージとして表示する文字列
buttons(省略可能):表示するボタンの種類
※省略した場合、”vbOKOnly”のボックスが表示
title(省略可能):メッセージボックスのタイトル
※省略した場合、”Microsoft Excel”が表示
種類
メッセージボックスには、「OK」のみ表示するシンプルなものから「はい」、「いいえ」などの選択型のものまでいろんな種類があります。
種類を一覧表にまとめましたので、お好みのものをお使いください。
定数 | 値 | 内容 |
---|---|---|
vbOKOnly | 0 | [OK]ボタンのみを表示する |
vbOKCancel | 1 | [OK]ボタンと[キャンセル]ボタンを表示する |
vbAbortRetryIgnore | 2 | [中止]、[再試行]、および[無視]の3つのボタンを表示する |
vbYesNoCancel | 3 | [はい]、[いいえ]、および[キャンセル]の3つのボタンを表示する |
vbYesNo | 4 | [はい]ボタンと[いいえ]ボタンを表示する |
vbRetryCancel | 5 | [再試行]ボタンと[キャンセル]ボタンを表示する |
vbCritical | 16 | 警告メッセージアイコンを表示する |
vbQuestion | 32 | 問い合わせメッセージアイコンを表示する |
vbExclamation | 48 | 注意メッセージアイコンを表示する |
vbInformation | 64 | 情報メッセージアイコンを表示する |
戻り値
メッセージボックスでユーザーが選択したコマンドによって、戻り値は変わります。
戻り値があることによって、コマンドごとに処理を変更することができるので、便利です。
定数 | 値 | 内容 |
---|---|---|
vbOK | 1 | [OK]ボタンが押された |
vbCancel | 2 | [キャンセル]ボタンが押された |
vbAbort | 3 | [中止]ボタンが押された |
vbRetry | 4 | [再試行]ボタンが押された |
vbIgnore | 5 | [無視]ボタンが押された |
vbYes | 6 | [はい]ボタンが押された |
vbNo | 7 | [いいえ]が押された |
メッセージボックス(MsgBox) 実際のコード
シンプルな使い方
vbOKOnly
Sub test()
MsgBox "vbOKOnly", vbOKOnly
End Sub
vbOKCancel
Sub test()
MsgBox "vbOKCancel", vbOKCancel
End Sub
vbAbortRetryIgnore
Sub test()
MsgBox "vbAbortRetryIgnore", vbAbortRetryIgnore
End Sub
vbYesNoCancel
Sub test()
MsgBox "vbYesNoCancel", vbYesNoCancel
End Sub
vbYesNo
Sub test()
MsgBox "vbYesNo", vbYesNo
End Sub
vbRetryCancel
Sub test()
MsgBox "vbRetryCancel", vbRetryCancel
End Sub
vbCritical
Sub test()
MsgBox "vbCritical", vbCritical
End Sub
vbQuestion
Sub test()
MsgBox "vbQuestion", vbQuestion
End Sub
vbExclamation
Sub test()
MsgBox "vbExclamation", vbExclamation
End Sub
vbInformation
Sub test()
MsgBox "vbInformation", vbInformation
End Sub
組み合わせる使い方
シンプルな使い方以外にも、組み合わせて使用することも可能です。
組み合わせる場合は、“+”で定数をつないであげます。
「vbRetryCancel」と「vbInformation」を例に見ていきましょう。
Sub test()
MsgBox "vbRetryCancel + vbInformation", vbRetryCancel + vbInformation
End Sub
選択コマンド(はい、いいえ)とアイコンを組み合わせることで、ユーザーによりわかりやすくなるため、ぜひ使ってみてください。
メッセージボックス内で改行
メッセージを見やすくするために、改行したいという場合は、“vbCrLf”を使うことで簡単に改行できます。
Sub test()
MsgBox ("1行目" & vbCrLf & "2行目")
End Sub
戻り値ごとに処理を変更する
戻り値ごとに処理を変更ができると、よりプログラミングの幅が広がるので、ぜひ参考にしてください。
コマンドを選択した場合
if文と組み合わせることで、コマンドごとに処理を変更することができます。
今回は、vbYesNoを使って、コマンドごとに処理を変更する方法を見ていきましょう。
Sub test()
Dim reply As Long
reply = MsgBox("「はい」 または 「いいえ」を選択してください。", _
vbYesNo + vbQuestion)
If reply = vbYes Then
MsgBox "「はい」が選択されました。"
Else
MsgBox "「いいえ」が選択されました。"
End If
End Sub
「はい」を選択
「いいえ」を選択
if文の使い方は、以下をご参照ください。
Excel VBA If文 複数条件の分岐処理は”Or”を使う!
“x”を選択した場合
ユーザーによっては、”x”を選択することも考えられます。
“x”の戻り値は、「キャンセル」と同じく、「vbCancel」です。
そこで、”x”が選択された場合の処理についても見ていきましょう。
Sub test()
Dim reply As Long
reply = MsgBox("「はい」 または 「いいえ」を選択してください。", _
vbRetryCancel + vbInformation)
If reply = vbCancel Then
MsgBox """x""が選択されました。"
End If
End Sub
「x」または「キャンセル」を選択
if文の使い方は、以下をご参照ください。
Excel VBA If文 複数条件の分岐処理は”Or”を使う!
標準ボタンの設定
標準ボタンとは、メッセージボックスを表示した際のコマンドの選択状態のことを言います。
標準ボタンを設定することで以下のようなメリットがあります。
- ユーザーの利便性の向上
- 誤操作の未然防止
何か表示された際、”Enter”キーを押すことってないですか?
例えば、通知を表示した際、”Enter”キーを間違えて押してしまったら、最初に選択されているコマンド(標準ボタン)をクリックしたことになります。
“ファイルを削除してもよろしいでしょうか?”というメッセージボックスで標準ボタンが「はい」側になっていて、間違えて”Enter”キーをを押してしまったら大変です。。。
そこで、標準ボタンを「いいえ」側にしておくことで、間違えて”Enter”キーを押しても大丈夫なように設計しておくことで、上記のようなことを未然に防ぐことができます。
仕様
標準ボタンの設定は、以下の通りです。
定数 | 値 | 内容 |
---|---|---|
vbDefaultButton1 | 0 | 第1ボタンを標準ボタンにする |
vbDefaultButton2 | 256 | 第2ボタンを標準ボタンにする |
vbDefaultButton3 | 512 | 第3ボタンを標準ボタンにする |
vbDefaultButton4 | 768 | 第4ボタンを標準ボタンにする |
デフォルトは、第1ボタンになっています。
表示されるメッセージボックスのコマンドを左から順番に1 → 2 → 3 → 4となります。
指定した番号がない場合、標準ボタンはデフォルト(第1ボタン)になります。
実際のコード
“vbDefaultButton2″を使ったコードを見ていきましょう。
Sub test()
Dim reply As Long
reply = MsgBox("「はい」 または 「いいえ」を選択してください。", _
vbYesNo + vbDefaultButton2)
If reply = vbCancel Then
MsgBox "が選択されました。"
End If
End Sub
「いいえ」が選択されていることがわかります。
if文の使い方は、以下をご参照ください。
Excel VBA If文 複数条件の分岐処理は”Or”を使う!
フォントは変更可能?
本記事の”基本的な使い方”で記載したように、フォントを指定する箇所はありません。
そのため、既存のメッセージボックスでは、フォントを変更することはできません。
代案としては、ご自身でメッセージボックスを自作するか、ユーザーフォームを使うことで好みのものを作ることも可能です。
自分好みのものを作りたいという方は、チャレンジしてみてください。
まとめ
ここまで、Excel VBAのメッセージボックス(MsgBox)の使い方についてご紹介しました。
基本的な使い方
MsgBox (prompt, [, buttons] [, title])
メッセージボックスはとても便利ですので、ぜひ本記事を参考にいろいろお試しください。