![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 22.02.2009
Сообщений: 4
|
![]()
Люди добрые!
Помогите, не могу разобраться, что не так в коде, получаю котировки через DDE, но их так много, что за одну секунду пишеться 4-5 строк, цель макроса такова, что бы выставить паузу желаемой длинны, прикрутил форму в которой выставляется время задержки, котировки накапливаются на другом листе, при этом Excel висит, может кто подскажет и другие пути решения задачи ![]() |
![]() |
![]() |
![]() |
#2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
В Вашем проекте можно заменить код:
Код:
Код:
Так будет работать побыстрее... Цитата:
Ставим в поле на форме интервал 0,2 вместо 1, и макрос будет записывать по 5 строк в секунду. Может, Вам надо отслеживать событие обновления данных на листе, вместо запуска макроса с постоянным интервалом?
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 22.02.2009 в 15:29. |
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 22.02.2009
Сообщений: 4
|
![]()
Спасибо за совет по оптимизации кода, счас попробую переписать, проблемку Вы не поняли, во время исполнения макроса Excel зависает, не реагирует ни на какие команды, при этом котировки записываются, и время я выставляю 5 секунд, так как при маленьком таймфрейме 1 сек пишеться слишком много информации
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 22.02.2009
Сообщений: 4
|
![]()
Всё таки распишу подробней, котировки поступают через DDE на лист "Исходный" Запись поступающих котировок производится на лист "Накопительный" при выставлении паузы в 5 секунд производится запись на лист "Накопительный" со смещением ячеек вниз, вроде всё работает, но Excel , зависает при работе не реагирует ни одна кнопка, кроме моей формы, где стоит нажать "СТОП" и EXCEL ачинает реагировать
|
![]() |
![]() |
![]() |
#5 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
Найдите среди свойств формы свойство ShowModal, и установите его в False И будет Вам счастье ![]() |
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 22.02.2009
Сообщений: 4
|
![]()
Ещё раз спасибо, как настрою выложу рабочую форму, может кому пригодиться.
|
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 26.12.2009
Сообщений: 2
|
![]()
Я при такой-же проблеме вставил в цикл DoEvents, процессор стал загружен на 25%, остальные проги работают.
Nobody_And_Nothing
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 14.08.2011
Сообщений: 5
|
![]()
[/QUOTE]
Может, Вам надо отслеживать событие обновления данных на листе, вместо запуска макроса с постоянным интервалом?[/QUOTE] Извиняюсь, а вы не могли бы подсказать как поменять код, чтобы запись шла именно так, то есть по мере каждого обновления полученных значений? Может ли макрос отслеживать сам факт получения новых значений с дде сервера, если они идентичны ранее полученным величинам и поступили с большой скоростью, например 30 раз за 50 миллисекунд? ![]() |
![]() |
![]() |
![]() |
#9 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Да, может.
Примеров таких макросов на форуме множество. Например, здесь: http://www.programmersforum.ru/showthread.php?t=40744 Суть: пишем в любую ячейку формулу, ссылающуюся на обновляемый по DDE диапазон, и обрабатываем событие пересчёта формул Worksheet_Calculate |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с dde | AndreiFX | Общие вопросы Delphi | 0 | 17.11.2008 06:07 |
таймер с задержкой на включение | amandra | Общие вопросы Delphi | 3 | 22.04.2008 23:20 |
многострочная подсказка с задержкой | dimonbest | Общие вопросы Delphi | 6 | 24.03.2008 13:13 |
Вопрос по DDE | AlphA | Работа с сетью в Delphi | 0 | 28.12.2007 22:51 |