|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
11.01.2009, 16:52 | #1 |
Форумчанин
Регистрация: 29.10.2008
Сообщений: 294
|
Не работает макрос при обновлении ячеек в реальном времени из другой книги
Есть 3 книги (Книга1, Экспорт(QUIK) и Экспорт(TQ))
В Книге1 на листе "Экспорт" записан макрос, который обновляет (должен обнослять) мин. и макс. цены. Т.е. если в реальном времени цена в столбце "текущая цена" превышает или меньше цены в соотв. столбцах "мин. или макс.", то цена в данных столбцах обновляется. Текущие цены экспортируются из одной из оставшихся книг (зависит от выбора пользователя - кнопка "Экспорт"). Так вот вся хрень в том, что если включен экспорт цен из QUIK или TQ, то при изменении цен в столбце "Текущая цена", макросы "Замена мин. цены" или "Замена макс. цены" не работают. А если отключить экспорт и менять тек. цены вручную (F17 должна НЕ содержать слово - ОСТАНОВЛЕН), то ВСЁ ОК! Почему??? |
12.01.2009, 00:00 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Думаю проблема в том, что в процедуре CommandButton1_Click сначала заполнялись ячейки колонок ЭФ и Джи из экспортных файлов, а потом сиротливо стоял оператор Range("F17").Value = "Quik", а до этого в F17 находилось значение "остановлен" и, соответственно, процедура Worksheet_Change(ByVal Target As Range) обрывала свою работу после проверки F17 и минимумы-максимумы не обновлялись.
Кроме того у вас там тонны лишнего кода, такое впечатление, что записано с макрорекордера и больше там человеческая нога не ступала. Я поправил слегка. Но на всякий случай файлик свой отложите где-то в сторонку или то, что я ниже прицепил переименуйте прежде, чем положить в папку с остальными файлами.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
12.01.2009, 11:01 | #3 | ||
Форумчанин
Регистрация: 29.10.2008
Сообщений: 294
|
Цитата:
Я проверил в Вашем коде некоторые ссылки на экспортные файлы, все что было неверно подправил. Действительно Ваш код намного проще и понятней, но я когда-нибудь тоже так смогу Цитата:
Теперь, действительно, при включении любого экспорта цены тутже обновляются, НО: допустим мы включили экспорт из QUIK, в соответствующие ячейки у нас прописались ссылки на Книгу "Экспорт(QUIK)" и вот пока я не остановлю экспорт, (цены в Книгу "Экспорт(QUIK)" экспортируются из спец. программы) в столбце "Текущая цена" цены постоянно меняются. И ИМЕННО В ЭТОМ РЕЖИМЕ не работает код по замене мин. и макс. цены. Не могу проверить работоспособность на работе, но даже в ручном режиме (если зайти в Книгу "Экспорт(QUIK)" и поменять там значение цены на новый экстремум), в Книге1 никакого обновления не происходит М.б. это связано с тем, что макрос работает только в активной книге, не знаю. А м.б. в режиме экспорта ничего не обновляется, т.к. в столбще "Тек. цена" стоят формулы с ссылками на другую книгу, а не числа? Последний раз редактировалось Maxx; 12.01.2009 в 11:44. |
||
12.01.2009, 11:42 | #4 |
Форумчанин
Регистрация: 29.10.2008
Сообщений: 294
|
Может быть сделать еще проще:
код: Sub Замена_МинМакс_цены() Application.ScreenUpdating = False Sheets("Экспорт").Select For r = 2 To 15 If Cells(r, 6).Value < Cells(r, 9).Value Then Cells(r, 9).Value = Cells(r, 6).Value If Cells(r, 6).Value > Cells(r, 8).Value Then Cells(r, 8).Value = Cells(r, 6).Value Next ActiveWorkbook.RefreshAll End Sub вообще не использовать, а код на листе "Экспорт": Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long If Range("F17").Value = "остановлен" Then Exit Sub r = Target.Row If r > 1 And r < 16 And (Target.Column = 6 Or Target.Column = 8 Or Target.Column = 9) Then If Cells(r, 6).Value < Cells(r, 9).Value Then Cells(r, 9).Value = Cells(r, 6).Value If Cells(r, 6).Value > Cells(r, 8).Value Then Cells(r, 8).Value = Cells(r, 6).Value End If End Sub запускать при условии включенного экспорта с интервалом, например, каждые 5 или 10 секунд? Такое вообще возможно? Последний раз редактировалось Maxx; 12.01.2009 в 11:51. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
переброс данных из Excel в Delphi в реальном режиме времени | Машутка | Общие вопросы Delphi | 3 | 27.09.2008 07:19 |
Как запустить макрос при изменении другой книги Excel? | Град | Microsoft Office Excel | 12 | 10.06.2008 10:01 |