ねらい:処理完了を「分かりやすく伝える」完了メッセージ
マクロが終わったのかどうか分からないと、初心者は「止まった?」「失敗した?」と不安になります。そこで 完了メッセージ を表示して「処理が正常に終わった」ことを明示するのが大切です。ここでは、基本の MsgBox から、応用のステータスバー表示、ユーザーフォームでの通知まで、初心者向けにかみ砕いて解説します。
基本テンプレート:MsgBox で完了通知
Sub SampleProcess()
' --- ここに処理を書く ---
Dim i As Long
For i = 1 To 100000
Dim s As String
s = "テスト" & i
Next
' --- 処理ここまで ---
MsgBox "処理が完了しました!"
End Sub
VB重要ポイント(深掘り)
MsgBoxは最も簡単な通知方法: 1行で「完了」を伝えられる。- ユーザー安心感: 「終わった」と分かるだけで操作性が向上。
- 注意: 毎回ポップアップが出ると煩わしい場合もあるので、用途に応じて選択。
応用テンプレート:処理時間を含めて通知
Sub SampleProcessWithTime()
Dim t0 As Double: t0 = Timer
' --- 処理 ---
Dim i As Long
For i = 1 To 200000
Dim s As String
s = "テスト" & i
Next
' --- 処理ここまで ---
Dim t1 As Double: t1 = Timer
MsgBox "処理が完了しました! 所要時間: " & Format(t1 - t0, "0.00") & " 秒"
End Sub
VB重要ポイント(深掘り)
- 処理時間を表示: ユーザーが「どれくらいかかったか」を把握できる。
- 改善効果の確認: 処理高速化の効果を数値で示せる。
ステータスバーで完了通知(非ポップアップ)
Sub SampleProcessStatusBar()
Application.StatusBar = "処理中..."
' --- 処理 ---
Dim i As Long
For i = 1 To 100000
Dim s As String
s = "テスト" & i
Next
' --- 処理ここまで ---
Application.StatusBar = "処理が完了しました!"
Application.OnTime Now + TimeValue("00:00:05"), "ClearStatusBar"
End Sub
Sub ClearStatusBar()
Application.StatusBar = False
End Sub
VB重要ポイント(深掘り)
- ステータスバー: Excel画面下部にメッセージを表示。ポップアップより邪魔にならない。
- 自動クリア:
OnTimeで数秒後に元に戻すとスマート。
ユーザーフォームで完了通知(カスタムデザイン)
' UserForm1 に Label を配置して "処理が完了しました!" と表示
Sub SampleProcessUserForm()
' --- 処理 ---
Dim i As Long
For i = 1 To 50000
Dim s As String
s = "テスト" & i
Next
' --- 処理ここまで ---
UserForm1.Show vbModeless
End Sub
VB重要ポイント(深掘り)
- 自由なデザイン: フォント・色・アイコンを自由に設定可能。
- 非モーダル表示:
vbModelessで表示すれば操作を続けられる。 - 業務帳票での活用: 「処理完了」「エラーあり」などを色分けして表示すると分かりやすい。
例題で練習
- 例1:
SampleProcess→ 単純な完了メッセージが出る。 - 例2:
SampleProcessWithTime→ 所要時間付きで完了通知。 - 例3:
SampleProcessStatusBar→ ステータスバーに完了通知が出て、数秒後に消える。 - 例4:
SampleProcessUserForm→ ユーザーフォームで完了通知を表示。
実務の落とし穴と対策
- 落とし穴1:毎回ポップアップで煩わしい
- 対策: ステータスバーやログシートへの記録に切り替える。
- 落とし穴2:処理が失敗しても「完了」と出る
- 対策: エラー処理を組み込み、成功時のみ完了メッセージを出す。
- 落とし穴3:長時間処理でユーザーが不安になる
- 対策: 途中経過をステータスバーに表示(例:「50%完了」)。
- 落とし穴4:複数マクロでメッセージが混乱
- 対策: メッセージに「処理名」を含める(例:「売上集計処理が完了しました」)。
スターター手順
- まずは MsgBox で完了通知を体験。
- 次に処理時間付き通知を追加。
- ステータスバー通知で邪魔にならない完了表示を試す。
- ユーザーフォーム通知でデザイン性を高める。
