MsgBox 組込関数

関数

1. 概要

MsgBox関数は、VBAにおいて最も基本的で頻繁に使われるダイアログボックス表示関数の一つです。
ユーザーに情報を伝えたり、警告を表示したり、またユーザーからの簡単な選択(ボタン操作)を取得する目的で使います。

Excel、Access、Wordなど様々なOfficeアプリケーションで共通して利用可能です。


2. MsgBoxの基本的な構文

result = MsgBox(prompt [, buttons] [, title] [, helpfile, context])
  • prompt(必須):表示したいメッセージ文字列や式。
  • buttons(省略可能):メッセージボックスのボタンの種類やアイコン、既定値、モーダルの種類などを設定する定数。
  • title(省略可能):メッセージボックスのタイトルバーに表示する文字列。
  • helpfile(省略可能):ヘルプファイルのパス(ほとんど使わない)。
  • context(省略可能):ヘルプコンテキストID(ほとんど使わない)。

3. MsgBoxの戻り値

MsgBoxはユーザーが押したボタンに応じて、どのボタンが押されたかを示す定数を返します。

戻り値はVbMsgBoxResult列挙定数で表され、主なものは以下の通りです。

定数名説明
vbOK1OKボタンが押された
vbCancel2キャンセルボタンが押された
vbAbort3中止ボタンが押された
vbRetry4再試行ボタンが押された
vbIgnore5無視ボタンが押された
vbYes6はいボタンが押された
vbNo7いいえボタンが押された

4. buttons引数の詳細

buttons引数では、以下の種類のオプションを組み合わせて設定します。

4-1. ボタンの種類

定数名内容
vbOKOnly0OKボタンのみ
vbOKCancel1OKボタンとキャンセルボタン
vbAbortRetryIgnore2中止・再試行・無視ボタン
vbYesNoCancel3はい・いいえ・キャンセル
vbYesNo4はい・いいえ
vbRetryCancel5再試行・キャンセル

4-2. アイコンの種類

定数名内容
vbCritical16エラーアイコン(赤い×)
vbQuestion32質問アイコン(?)
vbExclamation48警告アイコン(!)
vbInformation64情報アイコン(青いi)

4-3. ボタンの既定値(フォーカスの初期位置)

定数名内容
vbDefaultButton101番目のボタンが既定
vbDefaultButton22562番目のボタンが既定
vbDefaultButton35123番目のボタンが既定
vbDefaultButton47684番目のボタンが既定

4-4. モーダルタイプ

定数名内容
vbApplicationModal0アプリケーションモーダル(既定)
vbSystemModal4096システムモーダル(全画面操作不可)

5. 基本的な使用例

5-1. 単純なメッセージ表示

MsgBox "処理が完了しました。"

OKボタン付きで、タイトルはアプリ名(既定)となります。


5-2. タイトルとアイコンを指定

MsgBox "ファイルが見つかりません。", vbCritical, "エラー"

赤いエラーアイコン付きのメッセージボックスを表示。


5-3. Yes/Noの選択を促す

Dim result As VbMsgBoxResult

result = MsgBox("保存しますか?", vbYesNo + vbQuestion, "確認")

If result = vbYes Then
MsgBox "保存処理を実行します。"
Else
MsgBox "保存をキャンセルしました。"
End If

ユーザーの選択に応じた処理が可能。


6. buttonsの複数定数の組み合わせ方法

buttons引数は加算(+)またはビット演算子(Or)で複数の定数を組み合わせます。

MsgBox "削除しますか?", vbYesNo + vbExclamation, "警告"

もしくは

MsgBox "削除しますか?", vbYesNo Or vbExclamation, "警告"

7. MsgBox関数の戻り値を使った高度な制御例

ユーザーの入力を取得し、処理を分岐させる典型的な例を示します。

Sub DeleteConfirmation()
Dim userChoice As VbMsgBoxResult
userChoice = MsgBox("本当に削除しますか?", vbYesNo + vbCritical, "削除の確認")

Select Case userChoice
Case vbYes
Call DeleteData
Case vbNo
MsgBox "削除はキャンセルされました。"
End Select
End Sub

Sub DeleteData()
' 削除処理のコード
MsgBox "データを削除しました。", vbInformation
End Sub

8. MsgBoxのモーダル性

  • モーダルダイアログなので、ユーザーがメッセージボックスを閉じるまで、VBAのコードは一時停止します。
  • vbApplicationModal(既定)では、同一アプリケーション内の他のウィンドウの操作をブロックします。
  • vbSystemModalでは全OSレベルでの操作を一時停止させ、非常に強制力が強いが通常は使いません。

9. MsgBoxの制限と注意点

  • 表示内容はテキストのみで、リッチテキストや画像は表示できません。
  • 長文は読みにくくなるため、適切に改行(vbCrLf)を入れることが望ましい。
  • フォームなどより複雑なUIを作りたい場合はUserFormの使用が推奨されます。

10. MsgBoxの改行の方法

メッセージの改行にはVB定数を使います。

MsgBox "処理が完了しました。" & vbCrLf & "次の操作を選択してください。"

代表的な改行コードは

  • vbCrLf (キャリッジリターン+ラインフィード)
  • vbNewLine (環境依存の改行コード)
  • vbLf (ラインフィード)

11. MsgBoxとInputBoxの違い

項目MsgBoxInputBox
用途情報表示や選択肢提示ユーザーからテキスト入力を受け取る
ユーザー操作ボタンを押すだけ文字を入力してOKやキャンセルを押す
戻り値押したボタンの定数(vbOKなど)入力された文字列(キャンセルは””)

12. 便利な定数の一覧(代表例)

定数名説明
vbOKOnlyOKボタンのみ
vbOKCancelOKとキャンセル
vbAbortRetryIgnore中止・再試行・無視
vbYesNoCancelはい・いいえ・キャンセル
vbYesNoはい・いいえ
vbRetryCancel再試行・キャンセル
vbCriticalエラーアイコン
vbQuestion質問アイコン
vbExclamation警告アイコン
vbInformation情報アイコン

13. MsgBoxの応用例:エラーハンドリングでの利用

Sub SampleErrorHandling()
On Error GoTo ErrHandler

' エラー発生が予想される処理
Dim x As Integer
x = 1 / 0 ' 故意のエラー

Exit Sub

ErrHandler:
MsgBox "エラーが発生しました。処理を中止します。", vbCritical, "エラー"
End Sub

14. まとめ

ポイント説明
用途ユーザーへのメッセージ表示や簡単な選択肢入力取得
戻り値押されたボタンの定数(vbOK、vbCancelなど)
主要引数prompt(メッセージ)、buttons(ボタン種類+アイコンなど)、title(タイトル)
モーダル性ダイアログ表示中は処理停止し、ユーザー操作を待つ
改行vbCrLf等を使ってメッセージ内改行可能
使いどころ簡易なユーザー通知や確認ダイアログ、エラーメッセージ表示
限界複雑なUIには不向き、UserFormの使用推奨
タイトルとURLをコピーしました