RunningCSharp

MS系開発者による、雑多な記事。記事は所属企業とは関係のない、個人の見解です。

【VBA】 Application.EnableEventsをFalseにした際の影響範囲

Application.EnableEventsは、VBAのイベント発生を制御するプロパティです。

docs.microsoft.com

このプロパティにFalseを設定すると、Bookの全イベント(Workbook_Openなど※1)とSheetの全イベント(Worksheet_SelectionChangeなど※2)の実行が停止されます。

※1

f:id:ys-soniclab:20190811230342p:plain
Bookのイベント

※2

f:id:ys-soniclab:20190811230418p:plain
Sheetのイベント

対象範囲は、アプリケーション全体です。

つまり、先に立ち上げられたブックにて「Application.EnableEvents = False」というコードが実行された場合、 その後に立ち上げられたブックのイベントは全て止まってしまいます。

Excelのアプリケーションが複数立ち上がっている場合は、その限りではありません。アプリケーションの起動数はタスクマネージャーなどでご確認下さい。)

ただし、停止されるのはBookとSheetのイベントのみですので、シートに張り付けられたボタンオブジェクトに関連付けたマクロは動作します。

もちろん、「開発」タブ→「マクロ」の画面からのマクロ実行も可能です。