【VBA】メッセージボックスをモジュールに集める|OKOnly,OKCancel,YesNo
作成日:2022-12-02
更新日:2025-10-07

OKCancelとYesNoはTrue/falseを返す
'=============================
' Module: MsgBoxHelper.bas
'=============================
Option Explicit
'--- OKのみ ---
' 情報メッセージ用(デフォルトタイトル: "お知らせ")
Public Sub MsgOKOnly( _
ByVal text As String, _
Optional ByVal title As String = "お知らせ")
MsgBox text, vbOKOnly + vbInformation, title
End Sub
'--- OK/Cancel ---
' OKでTrue, CancelでFalse(デフォルトタイトル: "確認")
Public Function MsgOKCancel( _
ByVal text As String, _
Optional ByVal title As String = "確認") As Boolean
MsgOKCancel = (MsgBox(text, vbOKCancel + vbQuestion, title) = vbOK)
End Function
'--- Yes/No ---
' YesでTrue, NoでFalse(デフォルトタイトル: "確認")
Public Function MsgYesNo( _
ByVal text As String, _
Optional ByVal title As String = "確認") As Boolean
MsgYesNo = (MsgBox(text, vbYesNo + vbQuestion, title) = vbYes)
End Function
'--- Error ---
' エラーメッセージ用(デフォルトタイトル: "やり直してください")
Public Sub MsgError( _
ByVal text As String, _
Optional ByVal title As String = "やり直してください")
MsgBox text, vbCritical, title
End Sub
Caller example
' decide how to proceed based on result
' 呼び出し側例:結果に応じて処理方針を決定
' 入力検証
If Not IsValidInput() Then
MsgError "入力が不正です。"
Exit Sub ' ← 終了は呼び出し側で
End If
関数化のメリット
後で「全部英語にしたい」「警告音なしにしたい」となったときに
関数の中身を変えることえ全体が反映される
ポイント
- 統一UI方針を決める|Consistent Message UI
→ メッセージタイトルやアイコン(vbInformation / vbExclamation / vbQuestion)を統一。 - 返り値を明示的に変換|Explicit Return Conversion
→ 返り値型(Boolean)に合わせて比較式で整える。 - メッセージ共通化モジュールを作る
→ 例:MsgInfo
,MsgError
,MsgYesNo
,MsgOKCancel
などを同一モジュールにまとめる。
MsgOKCancelでやってること
MsgBox()
の戻り値は数値(VbMsgBoxResult
列挙体)vbOK = 1
vbCancel = 2
MsgOKCancel = (res = vbOK)
→vbOK
のときだけTrue
、それ以外はFalse
。
ボタンとアイコンの組み合わせ例
vbOKCancel + vbCritical '警告
vbYesNo + vbQuestion '質問
vbOKOnly + vbExclamation '注意
vbAbortRetryIgnore + vbQuestion
Vocabulary
| Message Wrapper|メッセージラッパー関数 |
| Wrapper Function|ラッパ関数 |
| Thin Abstraction Layer|薄い抽象化レイヤー |
| VbMsgBoxResult|メッセージボックスの戻り値 |
| VbMsgBoxStyle|メッセージボックスの表示スタイル |
| Explicit Conversion|明示的変換 |
| Consistent UI|一貫したUI |
| Centralized UI Feedback|UIメッセージの集中管理 |
Keep message functions consistent, and your UI will feel professional.
2022-12-02
編集後記:
この記事の内容がベストではないかもしれません。