- 「あ……間違えて削除ボタン押しちゃった……」
- 「今、このマクロって動いているのかな?」
職場でツールを使っていると、こんな不安に襲われることはありませんか?
職場で自作のExcelツールを使っている際、こうした操作ミスや状況把握への不安を感じることはありませんか?
実は、これらの悩みは「MsgBox(メッセージボックス)」を適切に設定するだけで解決できるのです。
MsgBoxはユーザーとツールをつなぐ「交通整理の信号機」
MsgBox関数は、プログラムからユーザーへ「完了の通知」を送ったり、「実行の可否」を確認したりするための対話窓口になります。
料理に例えるなら、味見をせずに調味料を投入するのを防ぐ「最終チェック」のような役割です。
わずか1行のコードを追加するだけで、人為的な操作ミスによるデータの消失などを未然に防ぐことが可能になります。
基本の書き方:3つの必須要素をマスターしましょう
MsgBoxの基本構造は非常にシンプルです。まずは以下の3つの要素を覚えましょう。
' 基本の形
' MsgBox "メッセージの内容", ボタンとアイコンの種類, "タイトルの文字"
これを踏まえて、実際のコードを見てみましょう。
Sub SampleMsg()
MsgBox "処理が完了しました!", vbInformation, "完了報告"
End Sub
【一覧表】ボタンとアイコンの種類
「!マーク」や「?マーク」を出すには、2つ目の項目(引数)に特定の名前を入れるだけです。
| 種類 | 定数名(コードに書く名前) | 見た目のイメージ | 使う場面 |
| 情報 | vbInformation | 青い「i」マーク | 完了報告など(安心感を与える) |
| 問い合わせ | vbQuestion | 青い「?」マーク | 実行前の確認(「いいですか?」) |
| 警告 | vbExclamation | 黄色の「!」マーク | 入力漏れなどの注意喚起 |
| 重大 | vbCritical | 赤の「×」マーク | エラーや深刻な問題 |
「はい」「いいえ」で処理を分ける(戻り値の活用)
ここが最も重要なステップです。ユーザーがクリックしたボタンに応じて、その後のプログラムの動きを切り替えることができます。
Sub DeleteConfirm()
Dim rc As VbMsgBoxResult
' メッセージを表示し、押されたボタンを変数に入れる
' vbYesNo で「はい」「いいえ」ボタンが出る。vbDefaultButton2 で「いいえ」を初期選択にする(安全策!)
rc = MsgBox("データを削除してもよろしいですか?", vbYesNo + vbQuestion + vbDefaultButton2, "最終確認")
' 押されたボタンによって処理を分ける
If rc = vbYes Then
' 「はい」の場合の処理
MsgBox "削除を実行しました。", vbInformation
Else
' 「いいえ」の場合の処理
MsgBox "キャンセルしました。", vbExclamation
End If
End Sub

「はい」の場合

「いいえ」の場合

まとめ:優れたツールは「対話」から生まれる
MsgBoxを使いこなせるようになると、ツールは単なる自動化手段から「親切な相棒」へと進化します。
特に、削除などの重大な処理の前に vbDefaultButton2 を設定し、安易な「はい」の連打を防ぐ工夫は、現場のユーザーから非常に喜ばれます。
まずは完了報告の vbInformation から取り入れてみてください。あなたの心遣いが、きっと誰かの「ヒヤリハット」を救う第一歩になるはずです。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント