Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2009, 14:01   #1
Klim Bassenger
Форумчанин
 
Аватар для Klim Bassenger
 
Регистрация: 20.01.2009
Сообщений: 138
По умолчанию Вопрос по пересчету таблиц.

Доброго время суток!
У меня есть вопрос:
Как происходит взаимодействие пересчета формул и работы макроса... То есть... В таблице в первой строке в столбцах от "B" до "CA" много разных формул (вклячая не самую быструю - ВПР).
Далее при помощи макроса:
1. вставляем в Столбец "А" данные... Строк так тысяч на пять...
2. "растягиваем" формулу вниз...
3. Копируем полученные данные и вставляем на другой лист...
Отсюда вопрос: Excel сначала пересчитывает все формулы до конца, а потом копирует на другой лист или может не дождаться конца расчета?
Дело в том, что, при вставке абсолютно одинаковых данных и запуске одного и того же макроса, результат получается разный... Может можно поставить в макросе условие, чтоб не торопился данные копировать, а дождался конца пересчета???
Спасибо!
P. S. Выложил бы файл, но там черт ногу сломит в коде.. как говорится проще заново сделать, чем сидеть и разбираться в нем!!! А суть проблемы я попытался изложить.
Чтобы правильно задать вопрос, надо знать большую часть ответа.
Klim Bassenger вне форума Ответить с цитированием
Старый 17.06.2009, 15:02   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

В самом начале макроса поставьте:
Application.Calculation = xlCalculationManual ' отключаем пересчёт формул

В конце макроса (или в том месте, когда надо выполнить пересчёт)
Application.Calculation = xlCalculationAutomatic ' включаем обратно
EducatedFool вне форума Ответить с цитированием
Старый 18.06.2009, 11:53   #3
Klim Bassenger
Форумчанин
 
Аватар для Klim Bassenger
 
Регистрация: 20.01.2009
Сообщений: 138
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
В самом начале макроса поставьте:
Application.Calculation = xlCalculationManual ' отключаем пересчёт формул

В конце макроса (или в том месте, когда надо выполнить пересчёт)
Application.Calculation = xlCalculationAutomatic ' включаем обратно
У меня так и было...
Пресчитывал всё за 4 минуты, но каждый раз разные значения...
Теперь убрал вкл/выкл персчет ... Пересчитывает 15 минут, но вроде без ошибок...
Может я не там пересчет вставлял и убирал???
Чтобы правильно задать вопрос, надо знать большую часть ответа.
Klim Bassenger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт таблиц АлёнаP Microsoft Office Access 0 18.03.2009 16:45
Вопрос с формой и связью таблиц Broodstar Microsoft Office Access 2 13.11.2008 17:01
Объеденение 2-х таблиц Stanislav БД в Delphi 3 28.07.2008 09:44
Связь таблиц БД kaa БД в Delphi 5 18.09.2007 18:29
Обновление таблиц Office Microsoft Office Excel 1 31.07.2007 09:09