Excelの確認メッセージはVBAでも表示される

VBAのコードを実行するとExcel特有のメッセージダイアログが表示されることがあります。

特に多いのが、ファイル保存時の「保存しますか?」系や、データ等を削除する際の「本当に削除しますか?」系のダイアログです。

これらのダイアログはVBAを使わずにExcelを直接操作した場合でも表示されます。そしてExcelと同様にVBAもはい、いいえボタンを押すまで処理が停止します。しかし、VBAでは確認ダイアログを出さずに処理したい場合があります。

Application.DisplayAlertsで表示と非表示を切り替える

確認ダイアログの表示と非表示を切り替えるにはApplication.DisplayAlertsを利用します。

以下はその例です。

3行目のApplication.DisplayAlerts = Falseがない場合は、14行目と16行目のそれぞれでダイアログが表示されます。

3行目のコメントをはずせばダイアログは表示されなくなります。

19行目で確認ダイアログを表示するように設定を戻していますが、Excel2007以降であればこれがなくても関数終了時にApplication.DisplayAlerts = Trueの状態に戻ります。

ただ、一応作法としては元に戻すコードは書いておいた方がよいでしょう。