Доброй ночи Всем. Такая "проблемка". Моя программа построена таким образом, что в процессе выполнения мне нужно включить процедуру. Процедура элементарно перетаскивает числовые значения с одного листа на другой. Так вот после каждой вставки нового значения, происходит пересчет всей книги Excel. Программа конечно "кряхтит и кашляет", но расчёт выполняет корректно. Не хочется "издеваться", хочется сделать более-менее нормально. Можно ли как-то, во время выполнения процедуры отключить пересчет книги Excel? Спасибо _________ Юрий.
Доброй ночи Всем. Такая "проблемка". Моя программа построена таким образом, что в процессе выполнения мне нужно включить процедуру. Процедура элементарно перетаскивает числовые значения с одного листа на другой. Так вот после каждой вставки нового значения, происходит пересчет всей книги Excel. Программа конечно "кряхтит и кашляет", но расчёт выполняет корректно. Не хочется "издеваться", хочется сделать более-менее нормально. Можно ли как-то, во время выполнения процедуры отключить пересчет книги Excel? Спасибо _________ Юрий.Юрий_Нд
Можно ли как-то, во время выполнения процедуры отключить пересчет книги Excel?
Конечно, при этом можно использовать Application.Calculation или Application.EnableEvents, если изменения могут вызвать вызов других процедур по событию изменения на листе например а там будет пересчет включатся принудительно. Ну и подправлю предыдущего оратора, просто так сюда менять опасно, нужно запомнить текущее состояние, изменить, а по окончании вернуть заполненное.
Можно ли как-то, во время выполнения процедуры отключить пересчет книги Excel?
Конечно, при этом можно использовать Application.Calculation или Application.EnableEvents, если изменения могут вызвать вызов других процедур по событию изменения на листе например а там будет пересчет включатся принудительно. Ну и подправлю предыдущего оратора, просто так сюда менять опасно, нужно запомнить текущее состояние, изменить, а по окончании вернуть заполненное.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Понедельник, 20.05.2019, 09:20
просто так сюда менять опасно, нужно запомнить текущее состояние, изменить а по окончании вернуть заполненное.
bmv98rus, если можно, по рабоче-крестьянски поясните пожалуйста Ваши опасения. Я так понял skais, что после объявления процедуры и объявления типов переменных нужно вставить: [vba]
Код
Application.Calculation = xlCalculationManua
[/vba]l А потом, перед завершением процедуры нужно вставить: [vba]
Код
Application.Calculation = xlCalculationAutomatic
[/vba] А Вы, я так понял, высказываете опасения, что можно типа как в "Матрице" заблудиться и не вернуться в "исходное состояние". Так всё-таки..., "что делать?"
просто так сюда менять опасно, нужно запомнить текущее состояние, изменить а по окончании вернуть заполненное.
bmv98rus, если можно, по рабоче-крестьянски поясните пожалуйста Ваши опасения. Я так понял skais, что после объявления процедуры и объявления типов переменных нужно вставить: [vba]
Код
Application.Calculation = xlCalculationManua
[/vba]l А потом, перед завершением процедуры нужно вставить: [vba]
Код
Application.Calculation = xlCalculationAutomatic
[/vba] А Вы, я так понял, высказываете опасения, что можно типа как в "Матрице" заблудиться и не вернуться в "исходное состояние". Так всё-таки..., "что делать?"Юрий_Нд
Сообщение отредактировал Юрий_Нд - Воскресенье, 19.05.2019, 23:13
sub Prits ACal=Application.Calculation 'запоминаем какой был параметр пересчета на начало процедуры Application.Calculation=3 'xlCalculationManual (можно через if Application.Calculation<>3 then Application.Calculation=3) 'код процедуры xlCalculationManua=ACal 'возвращаем взад то, что было end sub
[/vba]
[vba]
Код
sub Prits ACal=Application.Calculation 'запоминаем какой был параметр пересчета на начало процедуры Application.Calculation=3 'xlCalculationManual (можно через if Application.Calculation<>3 then Application.Calculation=3) 'код процедуры xlCalculationManua=ACal 'возвращаем взад то, что было end sub
Юрий_Нд, Чуть выше уже написано как, а делается это для того, чтоб в случае отключения пользователем или другими подпрограммами автоматического пересчета, не включить его после завершения конкретной процедуры, что может стать как сюрпризом, так и большой неприятностью.
Юрий_Нд, Чуть выше уже написано как, а делается это для того, чтоб в случае отключения пользователем или другими подпрограммами автоматического пересчета, не включить его после завершения конкретной процедуры, что может стать как сюрпризом, так и большой неприятностью.bmv98rus
Замечательный Временно просто медведь , процентов на 20.