Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Отключить пересчет книги Excel в процедуре? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отключить пересчет книги Excel в процедуре? (Макросы/Sub)
Отключить пересчет книги Excel в процедуре?
Юрий_Нд Дата: Воскресенье, 19.05.2019, 22:20 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
Доброй ночи Всем.
Такая "проблемка".
Моя программа построена таким образом, что в процессе выполнения мне нужно включить процедуру. Процедура элементарно перетаскивает числовые значения с одного листа на другой.
Так вот после каждой вставки нового значения, происходит пересчет всей книги Excel.
Программа конечно "кряхтит и кашляет", но расчёт выполняет корректно.
Не хочется "издеваться", хочется сделать более-менее нормально.
Можно ли как-то, во время выполнения процедуры отключить пересчет книги Excel?
Спасибо _________ Юрий.
 
Ответить
СообщениеДоброй ночи Всем.
Такая "проблемка".
Моя программа построена таким образом, что в процессе выполнения мне нужно включить процедуру. Процедура элементарно перетаскивает числовые значения с одного листа на другой.
Так вот после каждой вставки нового значения, происходит пересчет всей книги Excel.
Программа конечно "кряхтит и кашляет", но расчёт выполняет корректно.
Не хочется "издеваться", хочется сделать более-менее нормально.
Можно ли как-то, во время выполнения процедуры отключить пересчет книги Excel?
Спасибо _________ Юрий.

Автор - Юрий_Нд
Дата добавления - 19.05.2019 в 22:20
skais Дата: Воскресенье, 19.05.2019, 22:30 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 29 ±
Замечаний: 20% ±

Excel 2010
Юрий_Нд Либо отключите через меню в формулы либо в макросе перед началом выполнения процедуры
[vba]
Код
Application.Calculation = xlCalculationManual
[/vba]
и после
[vba]
Код
Application.Calculation = xlCalculationAutomatic
[/vba]
 
Ответить
СообщениеЮрий_Нд Либо отключите через меню в формулы либо в макросе перед началом выполнения процедуры
[vba]
Код
Application.Calculation = xlCalculationManual
[/vba]
и после
[vba]
Код
Application.Calculation = xlCalculationAutomatic
[/vba]

Автор - skais
Дата добавления - 19.05.2019 в 22:30
bmv98rus Дата: Воскресенье, 19.05.2019, 22:32 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Цитата Юрий_Нд, 19.05.2019 в 22:20, в сообщении № 1 ()
Можно ли как-то, во время выполнения процедуры отключить пересчет книги Excel?

Конечно, при этом можно использовать Application.Calculation или Application.EnableEvents, если изменения могут вызвать вызов других процедур по событию изменения на листе например а там будет пересчет включатся принудительно.
Ну и подправлю предыдущего оратора, просто так сюда менять опасно, нужно запомнить текущее состояние, изменить, а по окончании вернуть заполненное.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Понедельник, 20.05.2019, 09:20
 
Ответить
Сообщение
Цитата Юрий_Нд, 19.05.2019 в 22:20, в сообщении № 1 ()
Можно ли как-то, во время выполнения процедуры отключить пересчет книги Excel?

Конечно, при этом можно использовать Application.Calculation или Application.EnableEvents, если изменения могут вызвать вызов других процедур по событию изменения на листе например а там будет пересчет включатся принудительно.
Ну и подправлю предыдущего оратора, просто так сюда менять опасно, нужно запомнить текущее состояние, изменить, а по окончании вернуть заполненное.

Автор - bmv98rus
Дата добавления - 19.05.2019 в 22:32
Юрий_Нд Дата: Воскресенье, 19.05.2019, 23:10 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 441
Репутация: 19 ±
Замечаний: 0% ±

Excel 2013
просто так сюда менять опасно, нужно запомнить текущее состояние, изменить а по окончании вернуть заполненное.

bmv98rus, если можно, по рабоче-крестьянски поясните пожалуйста Ваши опасения.
Я так понял skais, что после объявления процедуры и объявления типов переменных нужно вставить:
[vba]
Код
Application.Calculation = xlCalculationManua
[/vba]l
А потом, перед завершением процедуры нужно вставить:
[vba]
Код
Application.Calculation = xlCalculationAutomatic
[/vba]
А Вы, я так понял, высказываете опасения, что можно типа как в "Матрице" заблудиться и не вернуться в "исходное состояние".
Так всё-таки..., "что делать?"


Сообщение отредактировал Юрий_Нд - Воскресенье, 19.05.2019, 23:13
 
Ответить
Сообщение
просто так сюда менять опасно, нужно запомнить текущее состояние, изменить а по окончании вернуть заполненное.

bmv98rus, если можно, по рабоче-крестьянски поясните пожалуйста Ваши опасения.
Я так понял skais, что после объявления процедуры и объявления типов переменных нужно вставить:
[vba]
Код
Application.Calculation = xlCalculationManua
[/vba]l
А потом, перед завершением процедуры нужно вставить:
[vba]
Код
Application.Calculation = xlCalculationAutomatic
[/vba]
А Вы, я так понял, высказываете опасения, что можно типа как в "Матрице" заблудиться и не вернуться в "исходное состояние".
Так всё-таки..., "что делать?"

Автор - Юрий_Нд
Дата добавления - 19.05.2019 в 23:10
_Boroda_ Дата: Воскресенье, 19.05.2019, 23:52 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
[vba]
Код
sub Prits
ACal=Application.Calculation 'запоминаем какой был параметр пересчета на начало процедуры
Application.Calculation=3 'xlCalculationManual (можно через if Application.Calculation<>3 then Application.Calculation=3)
'код процедуры
xlCalculationManua=ACal 'возвращаем взад то, что было
end sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[vba]
Код
sub Prits
ACal=Application.Calculation 'запоминаем какой был параметр пересчета на начало процедуры
Application.Calculation=3 'xlCalculationManual (можно через if Application.Calculation<>3 then Application.Calculation=3)
'код процедуры
xlCalculationManua=ACal 'возвращаем взад то, что было
end sub
[/vba]

Автор - _Boroda_
Дата добавления - 19.05.2019 в 23:52
bmv98rus Дата: Понедельник, 20.05.2019, 07:33 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Юрий_Нд, Чуть выше уже написано как, а делается это для того, чтоб в случае отключения пользователем или другими подпрограммами автоматического пересчета, не включить его после завершения конкретной процедуры, что может стать как сюрпризом, так и большой неприятностью.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеЮрий_Нд, Чуть выше уже написано как, а делается это для того, чтоб в случае отключения пользователем или другими подпрограммами автоматического пересчета, не включить его после завершения конкретной процедуры, что может стать как сюрпризом, так и большой неприятностью.

Автор - bmv98rus
Дата добавления - 20.05.2019 в 07:33
skais Дата: Понедельник, 20.05.2019, 08:45 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 29 ±
Замечаний: 20% ±

Excel 2010
Конечно, при этом можно использовать Application.Calculation Или Application.EnableEvents

можно поподробнее про Application.EnableEvents - как это можно отключить пересчет?
 
Ответить
Сообщение
Конечно, при этом можно использовать Application.Calculation Или Application.EnableEvents

можно поподробнее про Application.EnableEvents - как это можно отключить пересчет?

Автор - skais
Дата добавления - 20.05.2019 в 08:45
bmv98rus Дата: Понедельник, 20.05.2019, 09:18 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
можно поподробнее про Application.EnableEvents - как это можно отключить пересчет?

Или я конечно там случайно написал спасибо подправил и дополнил.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
можно поподробнее про Application.EnableEvents - как это можно отключить пересчет?

Или я конечно там случайно написал спасибо подправил и дополнил.

Автор - bmv98rus
Дата добавления - 20.05.2019 в 09:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отключить пересчет книги Excel в процедуре? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!