Введение:
У меня есть основная рабочая книга (A) и две другие рабочие книги (B & C).Основная рабочая книга имеет пользовательскую форму, из которой я делаю следующую последовательность:
Открыть B -> запустить макрос, который вызывает несколько других макросов в B -> сохранить и закрыть B -> Открыть C -> запустить макрос, который вызывает несколько других макросов в C -> сохранить и закрыть C
Проблема:
Моя проблема в том, что Application.ScreenUpdating = False
не работает должным образом.Я не возражаю против мерцания экрана, но раздражает то, что запуск кода занимает значительно больше времени, чем при правильной работе.
Код: (комментарии поясняются в следующем разделе)
Sub test()
Application.ScreenUpdating = False
Workbooks.Open ("H:\WorkbookA.xlsm")
'**** tried here ****
Application.Run ("'WorkbookA.xlsm'!TestA")
wbName = "H:\WorkbookA Test.xlsm"
ActiveWorkbook.SaveAs Filename:=wbName
ActiveWorkbook.Close
'**** split ****
Workbooks.Open ("H:\WorkbookB.xlsm")
'**** tried here ****
Application.Run ("'WorkbookB.xlsm'!TestB")
wbName = "H:\WorkbookB Test.xlsm"
ActiveWorkbook.SaveAs Filename:=wbName
ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
Я пытался:
Я пытался вставить Application.ScreenUpdating = False
непосредственно перед обеими Application.Run
строками, как показано в коде (**** пробовал************************************************************************************************************************************************************************************************************************************************* [*******************/* Наконец:
Я попытался разбить последовательность и запустить их отдельно, как показано в коде (**** split ****).Это прекрасно работает, что очень странно.
Я также заметил, что очень редко код работает так, как задумано, что меня смущает, поскольку я выполняю точно такие же действия, используя точно такой же набор данных.
Любые идеи или предложения приветствуются:)