2009-11-09 3 views
1

Я использую Application run для вызова нескольких макросов в порядке, подобном этому.Excel ждет, когда один макрос закончит, прежде чем звонить другому

Sub Run_All_Macros() 
    Application.Run ("Macro_1") 
    Application.Run ("Macro_1") 
End Sub 

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

+2

Это кажется странным. 'Application.Run' является синхронным. Вызов Application.Run («Macro_1») не вернется, пока макрос не завершит выполнение. Тем не менее, если макрос запускает асинхронный процесс, то вы можете получить эффект, который вы описываете. Что делают макросы, и какие у вас есть доказательства того, что макросы работают параллельно? –

+0

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

ответ

3

Если вы выполните макросы (используйте F8), вы увидите, что они работают по порядку, а не одновременно.

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

+0

Вы были правы, что-то пропустили в моей логике –