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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 11.01.2009, 16:52   #1
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
Вопрос Не работает макрос при обновлении ячеек в реальном времени из другой книги

Есть 3 книги (Книга1, Экспорт(QUIK) и Экспорт(TQ))

В Книге1 на листе "Экспорт" записан макрос, который обновляет (должен обнослять) мин. и макс. цены.
Т.е. если в реальном времени цена в столбце "текущая цена" превышает или меньше цены в соотв. столбцах "мин. или макс.", то цена в данных столбцах обновляется.

Текущие цены экспортируются из одной из оставшихся книг (зависит от выбора пользователя - кнопка "Экспорт").

Так вот вся хрень в том, что если включен экспорт цен из QUIK или TQ, то при изменении цен в столбце "Текущая цена", макросы "Замена мин. цены" или "Замена макс. цены" не работают.
А если отключить экспорт и менять тек. цены вручную (F17 должна НЕ содержать слово - ОСТАНОВЛЕН), то ВСЁ ОК!

Почему???
Вложения
Тип файла: rar Торговля.rar (37.6 Кб, 18 просмотров)
Maxx вне форума
Старый 12.01.2009, 00:00   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Думаю проблема в том, что в процедуре CommandButton1_Click сначала заполнялись ячейки колонок ЭФ и Джи из экспортных файлов, а потом сиротливо стоял оператор Range("F17").Value = "Quik", а до этого в F17 находилось значение "остановлен" и, соответственно, процедура Worksheet_Change(ByVal Target As Range) обрывала свою работу после проверки F17 и минимумы-максимумы не обновлялись.

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

Я поправил слегка. Но на всякий случай файлик свой отложите где-то в сторонку или то, что я ниже прицепил переименуйте прежде, чем положить в папку с остальными файлами.
Вложения
Тип файла: rar Книга1.rar (19.8 Кб, 13 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 12.01.2009, 11:01   #3
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Цитата:
Кроме того у вас там тонны лишнего кода, такое впечатление, что записано с макрорекордера и больше там человеческая нога не ступала.
Я в программирование не силен, поэтому пишу большие примитивные коды

Я проверил в Вашем коде некоторые ссылки на экспортные файлы, все что было неверно подправил. Действительно Ваш код намного проще и понятней, но я когда-нибудь тоже так смогу

Цитата:
Думаю проблема в том, что в процедуре CommandButton1_Click сначала заполнялись ячейки колонок ЭФ и Джи из экспортных файлов, а потом сиротливо стоял оператор Range("F17").Value = "Quik", а до этого в F17 находилось значение "остановлен" и, соответственно, процедура Worksheet_Change(ByVal Target As Range) обрывала свою работу после проверки F17 и минимумы-максимумы не обновлялись.
Но все же вопрос был в не в разовом обновлении, а в постоянном при достижении новых экстремумов.
Теперь, действительно, при включении любого экспорта цены тутже обновляются, НО:
допустим мы включили экспорт из QUIK,
в соответствующие ячейки у нас прописались ссылки на Книгу "Экспорт(QUIK)"
и вот пока я не остановлю экспорт, (цены в Книгу "Экспорт(QUIK)" экспортируются из спец. программы) в столбце "Текущая цена" цены постоянно меняются.
И ИМЕННО В ЭТОМ РЕЖИМЕ не работает код по замене мин. и макс. цены.

Не могу проверить работоспособность на работе, но даже в ручном режиме (если зайти в Книгу "Экспорт(QUIK)" и поменять там значение цены на новый экстремум), в Книге1 никакого обновления не происходит М.б. это связано с тем, что макрос работает только в активной книге, не знаю.

А м.б. в режиме экспорта ничего не обновляется, т.к. в столбще "Тек. цена" стоят формулы с ссылками на другую книгу, а не числа?

Последний раз редактировалось Maxx; 12.01.2009 в 11:44.
Maxx вне форума
Старый 12.01.2009, 11:42   #4
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 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 секунд?
Такое вообще возможно?
Вложения
Тип файла: rar Книга3.rar (30.8 Кб, 12 просмотров)

Последний раз редактировалось Maxx; 12.01.2009 в 11:51.
Maxx вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переброс данных из Excel в Delphi в реальном режиме времени Машутка Общие вопросы Delphi 3 27.09.2008 07:19
Как запустить макрос при изменении другой книги Excel? Град Microsoft Office Excel 12 10.06.2008 10:01