マクロ実行中にエクセルから表示されるアラート(警告・確認)メッセージや確認メッセージの表示が出ないように切り替える方法、マクロ実行中に画面をちらちら表示しないように切り替える方法、イベントマクロを発動させないように切り替える方法について説明しています。
アラート(警告・確認)メッセージを表示させない
エクセルからのアラート(警告・確認)メッセージはたとえば↓のようなものがあります。
シートを削除しようとした際に出る確認メッセージ
「このシートは完全に削除されます。続けますか?」
ファイルを保存しようとした際に、すでに同名のファイルがある場合に出るメッセージ。
「この場所に○○という名前のファイルが既にあります。置き換えますか?」
などなど。
手動で作業しているときは特に気にならないメッセージですが、マクロで処理を自動化したいときに途中でメッセージが出てしまうのは困ることがあります。
マクロで処理を自動化するときには、想定できるエラー処理は別で作成しておいて、エクセルから出るアラートは非表示に切り替えておくと便利です。
Sub sample1()
'アラートメッセージをOFFにする
Application.DisplayAlerts = False
'<ここに処理を書く>
'アラートメッセージをONにする
Application.DisplayAlerts = True
End Sub
デフォルトは「True」になっているので、アラートが出てほしくない処理の手前で「False」に切り替えます。
そのまま「False」で進んでしまうとあらゆるアラートが出なくなってしまうので、処理の後は「True」に戻しておくことが必要です。
画面更新をしない
こちらも良く使われるのがエクセルの画面更新を止めたいときに使用する「ScreenUpdating」の切り替えです。
マクロを実行している間、シートやブックの選択が切り替わった時に画面がチラチラと切り替わってしまうのを静止することができます。
Sub sample3()
'画面更新しない
Application.ScreenUpdating = False
'<ここに処理を書く>
'画面更新する
Application.ScreenUpdating = True
End Sub
エクセルのイベントマクロを発動させない
エクセルのマクロにはシートが選択されたときに発動して実行されるマクロや、値が変更されたときに実行するマクロなどのイベントマクロを作成することが可能です。
手動で値を変更したときにはイベントマクロを発動させたいけど、別のマクロから値を変更したときにはイベントマクロを発動させたくない場合などがあります。
そんな時に使用するイベントを発動させないようにするためのコードです。
Sub sample2()
'イベントマクロを発動させない
Application.EnableEvents = False
'<ここに処理を書く>
'イベントマクロを発動させる
Application.EnableEvents = True
End Sub
※コードのコピー利用について
・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。