Excel VBA MsgBoxの使い方(基礎〜応用まで徹底解説)

Excel VBAでメッセージボックス(MsgBox)を使いたいという方、この記事を読むことでメッセージボックスの使い方をマスターすることができます。

メッセージボックスは、以下のような用途で使います。

  • エラーが発生したことを伝える
  • 処理が完了したことを伝える

メッセージボックスを使うことで、何が起きたのか一目でわかるようになるため、とっても便利な機能です。

また、ユーザーの選択したコマンドごとに処理を変更したりもできます。

今回は、メッセージボックス(MsgBox)の使い方についてご紹介します。

記事の内容
  • メッセージボックス(MsgBox)を使いたい
  • 戻り値ごとに処理を変更したい


参考
MsgBox 関数Microsoft

メッセージボックス(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])

メッセージボックスはとても便利ですので、ぜひ本記事を参考にいろいろお試しください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です