Страницы: 1
RSS
Возможно , ускорить этот макрос замены ?
 
Уважаемые форумчане подскажите пожалуйста возможно-ли ускорить какой-нибудь из этих макросов замены , у них показатели где-то одинаковые меняет этот диапазон за 14 секунд ?  
 
Sub Zamena()  
Application.ScreenUpdating = False  
Dim t: t = Timer  
With Range("A203:BZS303")  
.Replace What:="3", Replacement:="1", LookAt:=xlPart  
.Replace What:="4", Replacement:="2", LookAt:=xlPart  
End With  
Application.ScreenUpdating = True  
  MsgBox (Timer - t)  
End Sub  
   
 
Sub ZAMENA2()  
Application.ScreenUpdating = False  
Dim avArrWhat, avArrRep, li As Long  
 Dim t: t = Timer  
avArrWhat = Array(3, 4)  
avArrRep = Array(1, 2)  
For li = LBound(avArrWhat) To UBound(avArrWhat)  
ActiveSheet.Range("a203:bzs303").Replace avArrWhat(li), avArrRep(li), xlPart, , False, False, False  
Next li  
 MsgBox (Timer - t)  
Application.ScreenUpdating = True  
End Sub
 
Попробуйте отключить автопересчёт формул первой строкой в макросе  
Примеров на форуме сотни.
 
Например так  
Sub zamena()  
Dim arr(), i As Long, j As Long  
Application.ScreenUpdating = False  
arr = [a203:bzs303].Value
For i = 1 To UBound(arr)  
   For j = 1 To UBound(arr, 2)  
       arr(i, j) = replace(arr(i, j), "3", "1")  
       arr(i, j) = replace(arr(i, j), "4", "2")  
   Next  
Next  
[a203:bzs303].Value = arr
Application.ScreenUpdating = True  
End Sub
 
EducatedFool, это не помогло :  
 
Application.Calculation = xlCalculationManual - это выключает автопересчет формул  
Application.Calculation = xlCalculationAutomatic - это включает автопересчет формул  
 
Ещё почему-то на 10 секунд медленнее , 24 секунды.
 
Спасибо , sva ! Действительно получилось  ,увеличилась скорость почти в 9 раз !
Страницы: 1
Читают тему
Наверх