Applicationオブジェクト Application.DisplayAlerts

Application

1. はじめに

Excel VBAにおけるApplication.DisplayAlertsは、Excelの 警告ダイアログや確認メッセージの表示を制御するプロパティです。

通常、Excelはユーザーに対して重要な操作時に確認メッセージを表示します。例えば、

  • ファイル上書き保存時の「上書きしてよろしいですか?」
  • ブックやシートの削除時の「本当に削除してよいですか?」
  • フォーマット変更などの警告

これらのダイアログはマクロ自動処理の際に停止要因となり、ユーザーの手動介入が必要になります。

Application.DisplayAlertsを活用すると、 これらの確認ダイアログの自動表示をON/OFFでき、マクロを自動化しやすくなります。


2. 基本仕様と設定方法

2-1. プロパティの型と初期値

  • 型: Boolean(True / False
  • 既定値: True(ダイアログは表示される)

2-2. 設定例

Application.DisplayAlerts = False  ' ダイアログを非表示にする(自動承認)
Application.DisplayAlerts = True ' ダイアログを再表示する(元に戻す)

3. 動作概要

設定値挙動の概要
TrueExcelの警告ダイアログを通常通り表示。ユーザーの操作待ちになる。
False警告ダイアログを表示しない。Excelが自動的に「OK」や「はい」と応答する。

4. DisplayAlerts=False を使う意義と効果

4-1. マクロの自動化とスムーズな処理

  • 上書き保存や削除など、通常ならユーザーがダイアログで「はい」をクリックしないと進まない操作を ダイアログ無しで即座に実行可能
  • 手動での介入が不要となり、完全自動処理のマクロ作成に不可欠。

4-2. マクロの途中で止まらない

  • ユーザーの操作待ちで処理が止まらず、エラーや処理遅延の回避になる。

5. 注意点・リスク

5-1. 警告が出ない=「確認無しで処理される」

  • DisplayAlerts = False の間はすべての警告が非表示になり、Excelは自動的にYes/OKを選択します。
  • 重要な操作(データ削除、上書き保存など)で意図しない変更が行われる可能性があるため、使いどころを慎重に選ぶ必要があります。

5-2. マクロ終了時に必ず元に戻す

  • DisplayAlertsFalseのまま放置すると、以降のExcel操作でダイアログが一切表示されなくなり、ユーザーが意図しない処理を実行してしまう恐れがある。
  • マクロの最後に必ずTrueに戻すことが必須。

6. 使用例とベストプラクティス

6-1. ファイルの保存時に上書き警告を非表示にする例

Sub 上書き保存()
Application.DisplayAlerts = False
ThisWorkbook.Save ' 警告なしで上書き保存
Application.DisplayAlerts = True
End Sub

6-2. シート削除時の警告を非表示にする例

Sub シート削除()
Application.DisplayAlerts = False
Sheets("Sheet1").Delete ' 警告ダイアログなしで削除
Application.DisplayAlerts = True
End Sub

7. エラーや中断時の安全対策

7-1. エラー時にも確実に元に戻すコード

Sub 安全なDisplayAlerts制御()
On Error GoTo エラー処理

Application.DisplayAlerts = False

' ここに処理を記述

Application.DisplayAlerts = True
Exit Sub

エラー処理:
Application.DisplayAlerts = True
MsgBox "エラーが発生しました: " & Err.Description
End Sub
  • エラーが発生しても警告表示を再開し、Excelの状態を正常に保つ。

7-2. Finally相当の処理

VBAにはFinallyがないため、エラー処理のラベルやExit Subを使って、必ずDisplayAlerts = Trueを実行するパターンが定番。


8. 他のApplicationプロパティとの連携

8-1. ScreenUpdating

  • 画面更新停止と組み合わせてマクロ処理の高速化と快適性向上。

8-2. EnableEvents

  • イベント発火の停止と併用で、より堅牢な処理制御が可能。

9. 注意すべき具体的なケース

9-1. DisplayAlerts=False中のファイル保存

  • 上書き保存の警告は出ないが、読み取り専用ファイルの保存などではエラーになる可能性がある。

9-2. DisplayAlerts=False中のシート削除

  • 複数シートの削除が続くと、戻せない変更になるため注意が必要。

10. まとめ

項目内容
プロパティ名Application.DisplayAlerts
Boolean(True / False
既定値True(警告ダイアログを表示)
役割Excelの警告・確認ダイアログの表示制御
False の効果ダイアログを非表示にし自動的に「OK」応答
用途マクロの自動化、ユーザー介入なしの処理実行
注意点処理完了後に必ず元に戻すこと、リスク管理が必要
安全策エラー処理で必ず True に戻すコードを入れる

11. 応用例:ファイル保存+警告非表示+画面更新停止

Sub ファイル自動保存処理()
On Error GoTo エラー処理

Application.DisplayAlerts = False
Application.ScreenUpdating = False

' ファイル保存(上書き)
ThisWorkbook.Save

Application.ScreenUpdating = True
Application.DisplayAlerts = True
Exit Sub

エラー処理:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "エラー発生:" & Err.Description
End Sub

12. さいごに

Application.DisplayAlertsは、Excel VBAマクロを ユーザー操作なしでスムーズに動かすための強力なツールです。
しかしその反面、ダイアログが表示されないことによる「誤操作」「データ消失」のリスクも伴うため、用途をしっかり理解し、適切に使うことが大切です。

タイトルとURLをコピーしました