Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Можно ли увеличить скорость работы макроса копирования данных
 
Здравствуйте. Подскажите, пожалуйста, можно ли увеличить скорость работы макроса. Макрос маленький, а выполняется 4 секунды.
Код
Sub Вставить_01()
    Application.ScreenUpdating = False
    Range("J10:J32").Copy
    Range("L41").PasteSpecial Paste:=xlPasteValues
    Range("L10:L32").Copy
    Range("M41").PasteSpecial Paste:=xlPasteValues
    Range("B3").Copy
    Range("O40").PasteSpecial Paste:=xlPasteValues
    Sheets("Лист2").Range("BG1").Copy
    Sheets("Лист1").Range("O51,B131").PasteSpecial Paste:=xlPasteValues
    Application.ScreenUpdating = True
End Sub
 
как минимум отключите калькуляцию перед и верните после, месте с обновлением экрана.
Изменено: БМВ - 16 Мар 2018 13:48:10
 
Код
Sub ArrCopy()
Dim arr(),a,aa as Range
arr=[J10:J32].value:[L41].Resize(Ubond(arr,1),Ubound(arr,2))=arr
arr=[L10:L32].value:[M41].Resize(Ubond(arr,1),Ubound(arr,2))=arr
[O40].value=[B3].Value
a=Sheets("Лист2").[BG1].value
For each aa in Sheets("Лист1").[O51,B131]
  aa.value=a
Next
End Sub
 
Конечно, Ubound.
 
То же, без переменных
Код
Sub Вставить_01()
  Application.ScreenUpdating = False
  Application.Calculation = xlCalculationManual
  With Range("J10:J32")
    Range("L41").Resize(.Rows.Count).Value = .Value
  End With
  With Range("L10:L32")
    Range("M41").Resize(.Rows.Count).Value = .Value
  End With
  Range("O40").Value = Range("B3").Value
  Sheets("Лист1").Range("O51,B131").Value = Sheets("Лист2").Range("BG1").Value
  Application.Calculation = xlCalculationAutomatic
  Application.ScreenUpdating = True
End Sub
Страницы: 1
Читают тему (гостей: 1)