Рекурсивный вызов при смене листа в VBA - PullRequest
2 голосов
/ 02 августа 2011

Я создал рабочую книгу с несколькими листами, я пытаюсь использовать WorkSheet_Change для Sheet1, то есть что-то, что изменилось на sheet1, копируется в sheet2.Точно так же, если что-то изменится на Sheet2, я также хочу сделать аналогичные изменения и на Sheet1.

При этом на обоих листах выполняется рекурсивный вызов, пожалуйста, дайте мне знать, как мне этого избежать.

Ответы [ 2 ]

7 голосов
/ 02 августа 2011

Вы должны отключить события при вызове макроса:

Sub Donot_Fire_Events()
    Application.EnableEvents = False
    ' Coding to skip these events
    Application.EnableEvents = True
End Sub
1 голос
/ 02 августа 2011

Поместите новую глобальную переменную в модуль и назовите ее, например, bAutoUpdating As Boolean.

Когда запускается код _Change, он должен установить значение true. Также любая процедура изменения должна не срабатывать, если это true. В конце каждой процедуры _Change устанавливается значение bAutoUpdating = false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...