Страницы: 1
RSS
Единократное срабатывание макроса по пересчету листа
 
Добрый вечер.
У меня есть вопрос.

Имеется три простых макроса.
Первый добавляет в ячейку А1 пятерку, второй добавляет в ячейку E1 - тройку.
Третий макрос - добавляет в ячейку B1 - единицу.
В ячейке A3 - стоит формула Случмежду.

Как при пересчете листа добиться, чтобы сработали эти три макроса - единократно ?

То есть суть такая - при выполнении этих трех макросов - эксель не должен воспринять их как три пересчета листа.
Он должен просто при пересчете - прибавить в А1 - пятерку, в E1 - тройку, в B1 - единицу.... и формула случмежду - должна сработать лишь один раз.
 
В начале макроса поставить проверку флага. Если установлен - завершение работы.
Флаг - любая отметка - в ячейке, в именах... где угодно

И зачем три отдельных макроса, если должны отработать все по одному событию?
Код
Sub Макрос1()
    If Range("D1").Value = "" Then
        Range("B1").Value = Range("B1").Value + 1
        Range("A1").Value = Range("A1").Value + 5
        Range("E1").Value = Range("E1").Value + 3
        Range("D1").Value = 1 ' поставили флаг
    End If
End Sub

Вот только какое событие?
 
Может отключать/включать отслеживание событий?
 
По условиям задачи - макросов не один, а три.
Менять их количество - нельзя.
 
OlegSmirnov, Еще вчера Вам был дан ответ одним из форумчан. Его после повторил Юрий М, в #3 .
для того, чтоб не запускался пересчет необходимо временно отключить обработчик событие
application.EnableEvents=False. Перед завершением кода желательно вернуть его обратно application.EnableEvents=True.
Изменено: БМВ - 10.03.2018 09:18:02
По вопросам из тем форума, личку не читаю.
 
БМВ, понятно
Страницы: 1
Наверх