В качестве начала вам следует стараться избегать использования select и active - как можно больше .Вам также следует попытаться как можно точнее определить, над какими объектами вы работаете, особенно при работе с несколькими различными книгами одновременно.Например, вы уверены в том, что делаете в этих строках, и уверены ли вы, что выполняете операцию в нужных диапазонах?Потому что нет, хотя отчасти это может быть потому, что передо мной нет книг.
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Полагаю, дело в удалении форматирования или что-то в этом роде?Если это так, то, вероятно, есть более эффективные способы сделать это.
Наконец, может быть полезно отключить некоторые свойства при запуске кода, чтобы ускорить его.Я часто использую эти небольшие макросы в начале и в конце любого кода, который я запускаю:
Sub deactivate()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
End Sub
Sub reaktiver()
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.Calculation = xlCalculationAutomatic
End Sub
Обратите внимание, что если вы зависите от вычислений, выполняемых во время выполнения кода, вам придется явно сделать этов то время как Application.Calculation
установлен на xlCalculationManual
.
Кроме того, я вижу, что вы печатали некоторые данные в строке состояния, когда ваш код работает, и если Application.DisplayStatusBar
имеет значение false, это не будет отображаться.Вам придется принять решение о том, перевешивает ли отображаемая информация дополнительную скорость, которую вы получаете, установив для этого свойства значение false.
Существует множество статей о том, как оптимизировать код VBA в Интернете, для дальнейшегоинформацию о том, какие свойства может быть хорошей идеей отключить, и что она будет делать, вы можете, например, посмотреть здесь .