Excelの確認メッセージはVBAでも表示される
VBAのコードを実行するとExcel特有のメッセージダイアログが表示されることがあります。
特に多いのが、ファイル保存時の「保存しますか?」系や、データ等を削除する際の「本当に削除しますか?」系のダイアログです。
これらのダイアログはVBAを使わずにExcelを直接操作した場合でも表示されます。そしてExcelと同様にVBAもはい、いいえボタンを押すまで処理が停止します。しかし、VBAでは確認ダイアログを出さずに処理したい場合があります。
Application.DisplayAlertsで表示と非表示を切り替える
確認ダイアログの表示と非表示を切り替えるにはApplication.DisplayAlertsを利用します。
以下はその例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub DisplayAlertsTest() '// 確認ダイアログを非表示にする ' Application.DisplayAlerts = False Dim bk As Workbook '// ワークブックを新規作成 Set bk = Workbooks.Add '// シートを追加 bk.Worksheets.Add '// シートに入力 bk.Sheets(1).Range("A1").Value = "a" '// シートを削除 bk.Sheets(1).Delete '// ここで削除確認ダイアログが表示 '// ワークブックを閉じる bk.Close '// ここで保存確認ダイアログが表示 '// 確認ダイアログを表示にする(元に戻す) Application.DisplayAlerts = True End Sub |
3行目のApplication.DisplayAlerts = Falseがない場合は、14行目と16行目のそれぞれでダイアログが表示されます。
3行目のコメントをはずせばダイアログは表示されなくなります。
19行目で確認ダイアログを表示するように設定を戻していますが、Excel2007以降であればこれがなくても関数終了時にApplication.DisplayAlerts = Trueの状態に戻ります。
ただ、一応作法としては元に戻すコードは書いておいた方がよいでしょう。