🔧
ShowMessageBox
ユーティリティカスタマイズ可能なメッセージボックスを表示する
VBAのMsgBox関数を使ってユーザーにメッセージを表示するマクロです。情報・警告・エラーなどのアイコンと、OK・はい/いいえ・キャンセルなどのボタン組み合わせを設定できます。ユーザーの選択(はい/いいえ)に応じて処理を分岐させる確認ダイアログや、処理完了の通知として広く使用されます。Application.DisplayAlertsと組み合わせたエラー処理にも活用できます。内部ではMsgBox関数の第2引数にアイコン定数(vbInformation等)とボタン定数(vbYesNo等)をOr演算子で組み合わせて渡しており、戻り値をSelect Caseで分岐させることでユーザーの選択に応じた処理を実装できます。DeleteSheetやClearAllNamedRangesのような取り消しの効かない処理の直前に組み込むことで、誤操作の防止策として機能します。

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: メッセージと種類を選択肢から指定してメッセージボックスを表示
🎯 活用シーン
- ✓重要データ削除前に「本当に削除しますか?」の確認ダイアログを表示
- ✓長時間処理の完了時に「処理が完了しました」の通知を表示
- ✓処理中に問題が発生した際に警告メッセージとエラー内容を表示
- ✓大量データを一括削除する処理の前に、件数を明示した確認ダイアログを表示して誤削除を防ぎたいとき
- ✓外部システムとの連携処理が失敗した際に、担当者へ具体的なエラー内容を分かりやすく提示したいとき
💡 実装のヒント
- ▸MsgBox戻り値: vbYes / vbNo / vbOK / vbCancel で分岐できます
- ▸vbInformation / vbWarning / vbCritical でアイコンの種類を指定します
- ▸第2引数にボタンとアイコンをOrで組み合わせて指定します
- ▸処理に時間がかかる場合は、開始時と完了時の両方でメッセージを表示し、ユーザーが処理状況を把握できるようにしてください。
- ▸エラー発生時のメッセージには、原因の推測や次に取るべきアクションを含めると、ユーザーが自力で解決しやすくなります。
💻 VBAコード
' ShowMessageBox
' -----------------
' Macro Name: ShowMessageBox
' Description: カスタマイズ可能なメッセージボックスを表示する
' Parameters: なし
' Returns: なし
' Usage: メッセージと種類を選択肢から指定してメッセージボックスを表示
' -----------------
Sub ShowMessageBox()
Dim msgText As String
Dim msgType As String
Dim iconType As VbMsgBoxStyle
Dim result As VbMsgBoxResult
On Error GoTo ErrorHandler
msgText = InputBox("表示するメッセージを入力:", "メッセージボックス表示", " Hello, World! ")
If msgText = "" Then
Exit Sub
End If
msgType = InputBox("種類を選択:" & vbCrLf & _
"1: 情報 (OKのみ)" & vbCrLf & _
"2: 警告 (OKのみ)" & vbCrLf & _
"3: エラー (OKのみ)" & vbCrLf & _
"4: 確認 (はい/いいえ)" & vbCrLf & _
"5: 詳細確認 (はい/いいえ/キャンセル)", "種類選択", "1")
Select Case msgType
Case "1": iconType = vbInformation
Case "2": iconType = vbExclamation
Case "3": iconType = vbCritical
Case "4": iconType = vbYesNo + vbQuestion
Case "5": iconType = vbYesNoCancel + vbQuestion
Case Else
MsgBox "無効な選択です。", vbExclamation
Exit Sub
End Select
result = MsgBox(msgText, iconType, "カスタムメッセージ")
Select Case result
Case vbYes: MsgBox "「はい」が選択されました。", vbInformation
Case vbNo: MsgBox "「いいえ」が選択されました。", vbInformation
Case vbCancel: MsgBox "「キャンセル」が選択されました。", vbInformation
Case vbOK: MsgBox "「OK」が選択されました。", vbInformation
End Select
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub