Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Excel: все быстрее, быстрее и быстрее

258
01 августа 2003 года
SergeySV
1.5K / / 19.03.2003
Хочу поднять тему по вопросу увелечения быстроты выполняемого коды в макросах Excel'а. Какие способы, кто знает?

Сейчас, для быстроты использую:
Application.ScreenUpdating = False

Однако заметил вот что, в одном моем файле идет удаление строк, при этом в первом столбце забит 13зн. цифровой код. И при удалении строк (при установл. Application.ScreenUpdating = False), я вижу как на статусбаре Excel'a мелькает фраза - "Готово" и итоговая сумма по первому столбцу, которую Excel вычисляет заново после каждого удаления строки (как Вы понимаете эта его сумма в процессе работы макроса мне нафиг не нужна).
Т.е. в процессе работа макроса, Excel параллельно еще нагружает процессор своими не нужными мне вычислениями, что не есть гуд. Интересно, можно ли это как-нибудь запретить...?

Пробовал такую вещь: ActiveSheet.EnableCalculation = False - реакция ноль.
267
01 августа 2003 года
Cutty Sark
1.2K / / 17.10.2002
Конечно можно и нужно.
Ставишь в начале
Application.Calculation = xlCalculationManual
а в конце
Application.Calculation = xlCalculationAutomatic

Естественно, это уместно, когда у тебя туча сложных формул.

И помни таких две тонкости.
1. Если у тебя есть формула, например, =А2, ты МЕНЯЕШЬ в программе значение ячейки А2, то значение ячейки с формулой не изменится без дополнительного Application.Calculate

2. В отличие от .ScreenUpdating свойство .Calculation само после окончания работы макроса не восстановится. Поэтому если ты прервал работу макроса, придется заново включать автопересчет в Сервис/Параметры...
258
01 августа 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Cutty Sark

2. В отличие от .ScreenUpdating свойство .Calculation само после окончания работы макроса не восстановится. Поэтому если ты прервал работу макроса, придется заново включать автопересчет в Сервис/Параметры...



Воткнем тогда этот код в обработку выхода макроса. Конечно если они прервут по Ctrl+Break...., но у меня пользователь скорее нажмет кнопку на форме - "Прервать" и тогда уж не минует заветной строчки... :)

А по поводу тучи формул: у меня импортируется из текст. файла инфа в Excel - одни голые значения, а потом уже, после все можного форматирования добавляются в несколько столбцов пару формул - тогда я так понимаю надо свойство можно включить (а можно и не включать пока) и на принудительную Calculate функцию запустить..

267
01 августа 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by SergeySV


Воткнем тогда этот код в обработку выхода макроса. Конечно если они прервут по Ctrl+Break...., но у меня пользователь скорее нажмет кнопку на форме - "Прервать" и тогда уж не минует заветной строчки... :)

А по поводу тучи формул: у меня импортируется из текст. файла инфа в Excel - одни голые значения, а потом уже, после все можного форматирования добавляются в несколько столбцов пару формул - тогда я так понимаю надо свойство можно включить (а можно и не включать пока) и на принудительную Calculate функцию запустить..



Когда включаешь автоматическое вычисление, .Calculate делается само собой.

Если у тебя всего пара десятков формул на книгу, сомневаюсь, что ты ускоришь работу таким образом.

Это когда целый столбец строк этак на 40000, да формулы не простые а "порядка n" (СУММ, СУММЕСЛИ, ПОИСКПОЗ, в общем, кому надо целый столбец перебирать) - тогда имеет смысл.

258
01 августа 2003 года
SergeySV
1.5K / / 19.03.2003
Замерим, проверим... :)
267
01 августа 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by SergeySV
Замерим, проверим... :)



Если есть ячейки с твоими собственными ВБАшными функциями, то скорость также зависит от того открыто ли окно ВБА.

Пиши о результатах, поборемся за секунды.

258
03 августа 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Cutty Sark


Если есть ячейки с твоими собственными ВБАшными функциями, то скорость также зависит от того открыто ли окно ВБА.

Пиши о результатах, поборемся за секунды.



Только после отпуска..... :):):)

267
04 августа 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by SergeySV


Только после отпуска..... :):):)



Ого! Счастливо отдохнуть. Без тебя тут будет трудно... ;)

Ладно, прорвемся...

265
04 августа 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by Cutty Sark


Ого! Счастливо отдохнуть. Без тебя тут будет трудно... ;)

Ладно, прорвемся...


Тоже хочу пожелать успешного отдыха, а вот я вернулся, и учитывая отпуск Сергея буду стараться больше внимания обращать на этот форум, так-что прорвемся

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог