Как VBA обрабатывает две запланированные функции, которые выполняются одновременно?

#excel #vba #scheduled-tasks

#excel #vba #запланированные задачи

Вопрос:

Я просто понимаю, что у меня есть два макроса на двух разных листах Excel, которые запланированы для запуска в определенное время в течение дня. Они перекрываются в 11: 30 и предназначены для отслеживания рыночных событий в это время. Одна из них будет запущена примерно через 10 секунд, в то время как выполнение другой может занять около 1 минуты. Обе содержат какое-то копирование и вставку. Важно, чтобы я получал информацию точно в 11: 30, поэтому задержка не была бы идеальной.

Один из макросов запланирован через приложение.Ontime, а другая является частью функции worksheet.calculate.

Мне было интересно, как VBA обрабатывает это? Будет ли он запускать макрос до конца, а затем запускать второй, или он попытается запустить одновременно, что приведет к некорректной работе копирования / вставки.

Комментарии:

1. VBA однопоточный, поэтому он не будет запускать их одновременно

2. Ок, круто — есть идеи, как определить, какая из них запускается первой?

3. Ваш вопрос не очень ясен. Вы говорите о двух запланированных функциях в названии вопроса, но затем говорите «Один из макросов запланирован через приложение. Ontime, а другая является частью worksheet.calculate function » — что предполагает, что запланирована только одна из двух функций (триггер другой не указан). По умолчанию Application.OnTime процедура будет выполняться по расписанию — или как только сможет (как только Excel перейдет в режим готовности).

4. Извините — Вторая функция также всегда будет запускаться в 11: 30.

5. @rickmanalexander в то время как C # или VB.NET предоставляйте фреймворк для многопоточности, параллельный доступ к COM-объектам будет отбрасываться COMException влево и вправо. COM и .NET имеют совершенно разные модели потоков, поэтому потоки .NET необходимо синхронизировать.net. Итак, .NET может выполнять MT, но взаимодействие .NET / COM MT = проблема.