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. 動作概要
設定値 | 挙動の概要 |
---|---|
True | Excelの警告ダイアログを通常通り表示。ユーザーの操作待ちになる。 |
False | 警告ダイアログを表示しない。Excelが自動的に「OK」や「はい」と応答する。 |
4. DisplayAlerts=False を使う意義と効果
4-1. マクロの自動化とスムーズな処理
- 上書き保存や削除など、通常ならユーザーがダイアログで「はい」をクリックしないと進まない操作を ダイアログ無しで即座に実行可能。
- 手動での介入が不要となり、完全自動処理のマクロ作成に不可欠。
4-2. マクロの途中で止まらない
- ユーザーの操作待ちで処理が止まらず、エラーや処理遅延の回避になる。
5. 注意点・リスク
5-1. 警告が出ない=「確認無しで処理される」
DisplayAlerts = False
の間はすべての警告が非表示になり、Excelは自動的にYes/OKを選択します。- 重要な操作(データ削除、上書き保存など)で意図しない変更が行われる可能性があるため、使いどころを慎重に選ぶ必要があります。
5-2. マクロ終了時に必ず元に戻す
DisplayAlerts
をFalse
のまま放置すると、以降の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マクロを ユーザー操作なしでスムーズに動かすための強力なツールです。
しかしその反面、ダイアログが表示されないことによる「誤操作」「データ消失」のリスクも伴うため、用途をしっかり理解し、適切に使うことが大切です。