Excel、VBAでChangeイベントを使うときには次の点に注意する必要があります。
Changeはワークシート上のどこが変わっても実行されます。
例えば、入力したセルを内容によって変換処理するようなケースを考えます。
まず入力することによって「変更イベント」が起きます。これを受けて変換処理が実行されます。
これによって「変更イベント」が起きます。また変換処理が実行されます。
延々と繰り返されて止まらなくなります。
これを防ぐためには、処理の直前に「ここからは変更イベントが起きても認識するな」という命令を入れる必要があります。これが「Application.EnableEvents = False」です。
目的の処理が終われば、「True」をセットして元に戻します。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Call プロシージャ
Application.EnableEvents = True
End Sub
Application.EnableEvents = False
Call プロシージャ
Application.EnableEvents = True
End Sub
コメント