Excel VBA で処理中にダイアログを表示させないようにする
「ファイルを閉じる前に保存しますか?」とか「ワークシートにデータがありますがシートを削除して良いですか?」みたいな確認ダイアログの類。Application.DisplayAlerts
というプロパティを使うと、これらの確認ダイアログを無視して処理ができる。
Sub Test()
Application.DisplayAlerts = False ' ダイアログを出さないようにする
' シート内にデータがある時もダイアログを出さずにシートを削除
Workbooks("Book1.xlsx").Worksheets(2).Delete
' 「保存しますか?」ダイアログを無視し、ファイルを保存せずにブックを閉じる
Workbooks("Book1.xlsx").Close
Application.DisplayAlerts = True ' ダイアログを出すように戻す
End Sub
「本当によろしいですか?」系の質問には「よろしいっつってんだろ!!」と、記述した命令を強制実行。
「保存しますか?」など別の動作を催促するような質問には「いや、保存しろって命令受けてないんで…」と、記述した命令以外のことはしないようにして (保存はしないで閉じるなど) 動作する、というイメージ。
参考
- Application.DisplayAlerts プロパティ (Excel) | Microsoft Docs
- http://www.relief.jp/itnote/archives/001936.php
-
プロシージャの実行が終了すると自動的に「True」に戻るはずなのですが、バージョンによってはバグがあって自動的に「True」にならないことあり、上のように明示的に「Application.DisplayAlerts = True」としておくことがお行儀のいいコーディングとされています。
-
- メッセージウィンドウの非表示 - 共通の操作 - Excel VBA入門
- Office TANAKA - Excel VBAファイルの操作 ブックを閉じる