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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2013, 17:21   #11
kaury
Пользователь
 
Регистрация: 27.09.2013
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Есть аж 3 разных способа:
1. Завязать на этот диапазон формулу и использовать событие пересчёта.
2. Завязать на эту ячейку текстбокс (или комбобокс, не помню) и использовать его события.
3. Было что-то умное, забыл... Но это должно быть тут: http://www.planetaexcel.ru/forum/ind...ID=8&TID=10022
Hugo121 спасибо! Когда вижу массу решений ни одно из которых реализовать не получается - у меня мозг начинает судорожно искать пути "кратчайшего сопротивления" . Таким образом, меня осинило
- а не запихнуть ли мне макрос в цикл. В итоге получилось следующее:

Sub my1()
Dim PauseTime As Single
Dim Start As Single

PauseTime = 1 ' время в секундах

Do While True

[N48].GoalSeek Goal:=[M17], ChangingCell:=[D48]
[N49].GoalSeek Goal:=[M18], ChangingCell:=[D49]

Start = Timer

Do While Timer < Start + PauseTime
DoEvents
Loop
Loop

End Sub

Не знаю уж, насколько это эффективно (подозреваю, что мягко говоря не очень), но работает как надо. Поправьте пожалуйста, если будут мысли, время и желание. Спасибо!
kaury вне форума Ответить с цитированием
Старый 30.09.2013, 17:57   #12
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

можно и так, конечно, но уж очень расточительно.

в любую ячейку =В1*1 или =В1+0 - чтобы В1 участвовла в расчете
и обрабатывать событие calculate этой ячейки.

читайте это в справке: Range.Calculate Method
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.09.2013, 18:10   #13
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну да.
А если нужно контролировать диапазон - ну посчитайте по нему сумму, или количество занятых ячеек.
Чего там сложного - у Вас ведь уже код висит на событии. Ну и перевесьте его на другое событие.

Вероятно так - вешаем на пересчёт, а внутри проверяем что считалось:

To calculate Follow this example
All open workbooks: Application.Calculate (or just Calculate)
A specific worksheet: Worksheets(1).Calculate
A specified range: Worksheets(1).Rows(2).Calculate

Хотя можно конечно и на каждый чих макрос отрабатывать. Особенно если там других формул нет
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 30.09.2013 в 18:14.
Hugo121 вне форума Ответить с цитированием
Старый 01.10.2013, 16:59   #14
kaury
Пользователь
 
Регистрация: 27.09.2013
Сообщений: 14
По умолчанию

IgorGO, Hugo121 ещё раз большое спасибо за помощь и подсказки. После тестирования всё-таки пришлось оставить вариант с циклом и даже увеличить тайминг, т.к. при очень частом обновлении выяснилось, что при некоторых, так называемых "аномальных" значениях ...Goal:=[M17]... (их больше 30 шт.) методом итераций формула просто физически не находит решений. Таким образом практически оставалось целесообразнее оставить цикл и сущетвенно увеличить тайминг, чтобы не "хватать" каждую аномалию.
kaury вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать формулу для Excel 2003 sanya14 Microsoft Office Excel 12 25.01.2012 13:47
Переделать формулу для Excel 2003 cassiopeya Microsoft Office Excel 4 27.09.2010 14:27
Нужно упростить, переделать формулу avtopark Microsoft Office Excel 3 06.02.2010 10:32
Как переделать формулу mik Microsoft Office Excel 1 27.10.2007 19:07