Changeイベントを使うときの注意

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

コメント

タイトルとURLをコピーしました