大体でIT
大体でIT
Excel VBAで、イベントの発生を停止して無効にするには、「EnableEvents」を使います。値の変更や選択セルの変更時のイベントを停止することができます。イベントを使う際はは「EnableEvents」の使い方もマスターしていきましょう。
この記事では、イベントの発生を停止して無効にする方法について、ご紹介します。
イベントを無効にするには、「EnableEvents」を使います。
値変更や、選択セルの変更時に発生するイベントを「無効」にすることができます。
値の変更時に発生するイベントでは、値を入力するときに無限ループとなってしまう場合があります。
無限ループを回避するために「EnableEvents」を使います。
イベントを使う際は「EnableEvents」の使い方もマスターしていきましょう。
では、イベントの発生を停止して無効にする方法について、解説していきます。
「選択セル変更」時のイベントを使っている場合でやってみます。
「選択セル変更」時のイベントを使う
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'アクティブセルに値を入力
ActiveCell = "選択しました"
End Sub
Sub TEST1()
Range("A1").Select
Range("A2").Select
Range("A3").Select
Range("A4").Select
Range("A5").Select
End Sub
選択したセルに値が入力されるというVBAコードです。
選択したセルに値が入力される
「EnableEvents」でイベントを無効にする
「EnableEvents」でイベントを無効にしてみます。
「EnableEvents」でイベントを無効にする
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'アクティブセルに値を入力
ActiveCell = "選択しました"
End Sub
Sub TEST2()
Range("A1").Select
Range("A2").Select
'イベントを無効
Application.EnableEvents = False
Range("A3").Select
'イベントを有効
Application.EnableEvents = True
Range("A4").Select
Range("A5").Select
End Sub
「EnableEvents」で選択セル変更時のイベントを停止して無効にできます。
イベントを無効にできた
「Range("A3")」を選択する際にイベントを無効にできました。
こんな感じで、イベントが発生する前に「EnableEvents = False」で無効にして、「EnableEvents = True」で有効にします。
Changeのイベントの無限ループを回避する際にも「EnableEvents」が使えます。
Changeイベントを使って入力した値に「1」を足すVBAコードを作成したいです。
入力した値に「1」を足したい
まずは、「EnableEvents」を使わずにやってみます。
Changeイベントで値を入力すると無限ループとなってしまいます。
無限ループになっちゃう例
Private Sub Worksheet_Change(ByVal Target As Range)
'値を入力
Target.Value = Target.Value + 1 '←無限ループとなりますので、ご注意ください
End Sub
Sub TEST2()
'値を入力
Range("A1") = 1
End Sub
「1」を入力してみる
無限ループになる
Changeイベントで値を入力する際は、注意です。
「EnableEvents」でイベントを無効にする
「EnableEvents」でイベントを無効にして、無限ループを回避してみます。
「EnableEvents」でイベントを無効にする
Private Sub Worksheet_Change(ByVal Target As Range)
'イベントを無効
Application.EnableEvents = False
'値を入力
Target.Value = Target.Value + 1
'イベントを有効
Application.EnableEvents = True
End Sub
Sub TEST3()
'値を入力
Range("A1") = 1
End Sub
という感じで、「値の入力の前」に「EnableEvents = False」でイベントを「無効」にして、値入力後に「有効」にします。
「1」を入力してみる
「1」を足せた
こんな感じで、Changeイベントで値を入力する際は、「EnableEvents」でイベントを無効にして入力しましょう。
この記事では、イベントの発生を停止して無効にする方法について、ご紹介しました。
イベントを無効にするには、「EnableEvents」を使います。
値変更や、選択セルの変更時に発生するイベントを「無効」にすることができます。
値の変更時に発生するイベントでは、値を入力するときに無限ループとなってしまう場合があります。
無限ループを回避するために「EnableEvents」を使います。
イベントを使う際は「EnableEvents」の使い方もマスターしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。