【Excel VBA】イベントを発生させないようにする(EnableEvents)

はじめに

今回は、イベントを発生させないようにする方法を解説します。
Excel VBAを記述するうえで、イベントを発生させたくない場合もあるかと思います。
基本構文からサンプルコードまで詳細に解説いたします。

この記事を読むメリット
  • イベントを発生させないようにする方法が分かります。
  • 基本構文から設定値まで詳しく解説します。
  • コピペで使える実践的なサンプルコードを掲載しています。

基本情報

EnableEventsプロパティ

イベントを発生させないようにするには、ApplicationオブジェクトのEnableEventsプロパティを使用します。

EnableEventsプロパティには、Boolean型を指定します。
Trueの場合は「通常通りイベントを発生」させ、Falseの場合は「イベントの発生を抑止」することが出来ます。

構文

構文

Application.EnableEvents = 設定値

設定値

Boolean型を指定します。
設定値と、その効果を以下に示します。

設定値
  • True:イベントを発生させる
  • False:イベントの発生を抑止する

サンプルコード

一時的にイベントを発生させないようにする

サンプルコード
Private Sub Worksheet_Change(ByVal Target As Range)

    If IsNumeric(Target.Value) And Target.Value > 1 Then

        ' 変更されたセルが 数値型 かつ 1より大きい場合

        ' イベントを抑止
        Application.EnableEvents = False

        Target.Value = 1

        ' イベントの抑止解除
        Application.EnableEvents = True
    End If
End Sub

イベントを抑止していない場合は、10行目にて値を書き換えた時点でイベントが発生したうえ、再度「Worksheet_Change」イベントが発生して無駄な処理が発生します。

最後に

今回は、イベントを発生させないようにする方法を解説しました。

サンプルコードに掲載した通り、不要なイベントについては抑止する方がパフォーマンスとしても良いでしょう。

本記事が皆さんのお力になれば幸いです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA