Excel VBA 逆引き集 | 完了メッセージ

Excel VBA
スポンサーリンク

ねらい:処理完了を「分かりやすく伝える」完了メッセージ

マクロが終わったのかどうか分からないと、初心者は「止まった?」「失敗した?」と不安になります。そこで 完了メッセージ を表示して「処理が正常に終わった」ことを明示するのが大切です。ここでは、基本の 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. 例1: SampleProcess → 単純な完了メッセージが出る。
  2. 例2: SampleProcessWithTime → 所要時間付きで完了通知。
  3. 例3: SampleProcessStatusBar → ステータスバーに完了通知が出て、数秒後に消える。
  4. 例4: SampleProcessUserForm → ユーザーフォームで完了通知を表示。

実務の落とし穴と対策

  • 落とし穴1:毎回ポップアップで煩わしい
    • 対策: ステータスバーやログシートへの記録に切り替える。
  • 落とし穴2:処理が失敗しても「完了」と出る
    • 対策: エラー処理を組み込み、成功時のみ完了メッセージを出す。
  • 落とし穴3:長時間処理でユーザーが不安になる
    • 対策: 途中経過をステータスバーに表示(例:「50%完了」)。
  • 落とし穴4:複数マクロでメッセージが混乱
    • 対策: メッセージに「処理名」を含める(例:「売上集計処理が完了しました」)。

スターター手順

  1. まずは MsgBox で完了通知を体験。
  2. 次に処理時間付き通知を追加。
  3. ステータスバー通知で邪魔にならない完了表示を試す。
  4. ユーザーフォーム通知でデザイン性を高める。
タイトルとURLをコピーしました