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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2009, 16:13   #1
pan
 
Регистрация: 22.02.2009
Сообщений: 5
По умолчанию Обработка в Excel внешних событий

Добрый день!

Пытаюсь решить следующую задачу.
Существует COM-класс через который происходит обмен данными
Excel и внешней программы.

Обмен данными происходит по событиям, которые запускают подпрограммы обработки событий. Событий может быть несколько.

Меня интересует вопрос, что произойдет, если в процессе обработки события возникнет новое событие того-же вида или друго вида.

Буду благодарен за любые ответы.
pan вне форума Ответить с цитированием
Старый 22.02.2009, 16:24   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
что произойдет, если в процессе обработки события возникнет новое событие того-же вида или друго вида
Не совсем понятен вопрос.

Если внутри кода обработчика события не отключается обработка событий (что-то типа Application.EnableEvents = False), то запустится обработчик соответствующего события (или вторая копия обработчика того же события)

Ответ получился таким же мутным, как и вопрос

Лучше прикрепите файл с кодом (или приведите пример кода), и конкретизируйте вопрос.
EducatedFool вне форума Ответить с цитированием
Старый 22.02.2009, 16:35   #3
pan
 
Регистрация: 22.02.2009
Сообщений: 5
По умолчанию дополнение

Вопрос состоит в том, что если события будут возникать быстрее
чем выполняется их обработка, то вновь возникшие события
будут выстраиваться в очередь?

И если так, то насколько длинной может быть эта очередь?

От этого зависит какие функции возложить на обработчик события:
- только сохранение данных передаваемых в событии
- сохранение и обработку полученных данных.
pan вне форума Ответить с цитированием
Старый 22.02.2009, 16:56   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Хороший вопрос...

Проведём эксперимент - напишем обработчик события изменения выделения на листе Excel:
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    t = Timer: While Timer < t + 5: DoEvents: Wend ' пауза 3 секунды
    Debug.Print Target.Address
End Sub
Теперь, если мы будем резво щелкать мышкой на разных ячейках, то в течении первых 3 секунд ничего не произойдёт, а по истечении этого времени почти одновременно сработает множество команд Debug.Print Target.Address

Если же мы будем выделять ячейки программно
Код:
Sub test()
    For i = 1 To 1000: Cells(i).Select: Next
End Sub
то выполнение кода макроса test будет приостанавливаться на 3 секунды после выделения каждой ячейки.

Как будет всё это работать в Вашем случае - не знаю (запустятся все обработчики одновременно, или один за другим).

Длина очереди событий, скорее всего, ограничивается размерами оперативной памяти, доступной приложению.

Цитата:
От этого зависит какие функции возложить на обработчик события
А, может, просто оптимизировать код?
Приведите пример кода - посмотрим, вдруг время его выполнения реально уменьшить в несколько раз...
EducatedFool вне форума Ответить с цитированием
Старый 22.02.2009, 17:26   #5
pan
 
Регистрация: 22.02.2009
Сообщений: 5
По умолчанию

У меня еще нет готового кода.
На данном этапе пытаюсь детализировать задачу.

Похоже придется экспериментировать.

Задача усложняется тем, что внешняя программа, генерирующая
события работает только в рабочие дни и часы (Биржа)

Спасибо за ответы.
pan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление внешних связей Григорьев Игорь Microsoft Office Excel 12 10.11.2008 11:33
обработка Excel таблиц JSM Общие вопросы Delphi 4 10.04.2008 13:04
Компиляция внешних файлов NoRty Паскаль, Turbo Pascal, PascalABC.NET 2 25.02.2008 15:34
Импорт внешних данных asale Microsoft Office Excel 1 15.04.2007 00:41
обработка событий из консоли! nereus Общие вопросы Delphi 0 07.02.2007 15:33