読者です 読者をやめる 読者になる 読者になる

Corredor

ウェブ、プログラミングの勉強メモ。

Excel VBA で処理中にダイアログを表示させないようにする

「ファイルを閉じる前に保存しますか?」とか「ワークシートにデータがありますがシートを削除して良いですか?」みたいな確認ダイアログの類。Application.DisplayAlerts というプロパティを使うと、これらの確認ダイアログを無視して処理ができる。

Sub Test()
    Application.DisplayAlerts = False    ' ダイアログを出さないようにする
    
    ' シート内にデータがある時もダイアログを出さずにシートを削除
    Workbooks("Book1.xlsx").Worksheets(2).Delete
    
    ' 「保存しますか?」ダイアログを無視し、ファイルを保存せずにブックを閉じる
    Workbooks("Book1.xlsx").Close
    
    Application.DisplayAlerts = True    ' ダイアログを出すように戻す
End Sub

「本当によろしいですか?」系の質問には「よろしいっつってんだろ!!」と、記述した命令を強制実行。

「保存しますか?」など別の動作を催促するような質問には「いや、保存しろって命令受けてないんで…」と、記述した命令以外のことはしないようにして (保存はしないで閉じるなど) 動作する、というイメージ。

参考