確認メッセージを非表示にするExcel VBA

Excelでは、シートの削除などの重大な変更を行う際に、アラートが表示されます。作業のミスを未然に防ぐ便利な機能ですが、Excel VBAで自動化を行う際に確認メッセージやエラーが表示されると、処理が中断してしまいます。アラートで処理を中断させたくない場合には、あらかじめ確認メッセージを非表示にしておく必要があります。

新たにワークシート"SheetSample"を生成して、3秒後にそのワークシートをアラートなしで削除するサンプルです。

コード

モジュール内に以下を記述します。

Sub Sample()
    'ワークシート(SheetSample)を生成する
    Worksheets.Add.Name = "SheetSample"
    '3秒処理を停止する
    Application.Wait Now() + TimeValue("00:00:03")
    '確認メッセージを非表示にする
    Application.DisplayAlerts = False
    'ワークシート(SheetSample)を削除する
    Worksheets("SheetSample").Delete
    '確認メッセージを表示する
    Application.DisplayAlerts = True
End Sub

実行結果

新たにワークシート"SheetSample"が生成されます。

excel-vba-to-hide-displayalerts_01

3秒後にワークシート"SheetSample"がアラートなしで削除されます。

excel-vba-to-hide-displayalerts_02

解説

Application.DisplayAlertsプロパティ

Application.DisplayAlertsプロパティが True の場合、マクロの実行中に特定の警告やメッセージを表示します。マクロの実行中に、ユーザーに入力を促すメッセージや警告メッセージを表示せず、既定の応答が自動的に選択されるようにするには、このプロパティを False に設定してください。

Microsoft Docs, Application.DisplayAlerts プロパティ (Excel)

Application.DisplayAlertsプロパティを用いて、警告やメッセージの表示・非表示を切り替えています。

Application.Waitメソッド

マクロは一瞬で実行されてしまうため、シートの生成と削除を認識できるようにシートの表示と削除の間にWaitメソッドを入れてシートが生成されて削除するまでに3秒の待ち時間を挟んでいます。今回の目的とは全く関係ないコードなので、実際に運用する際は削除しましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です