¿Se puede mejorar un código en Excel?
El siguiente código se pone realmente muy lento cuando aumentan las filas de las hojas que lee
¿Alguien podría colaborar con una versión mejorada que sea más rápida?
Desde ya muchas gracias!
Private Sub CommandButton1_Click() Application.ScreenUpdating = False If Sheets("HOJA1").AutoFilterMode = True Then Sheets("HOJA1").AutoFilterMode = False Columns("A:O").Select ActiveWorkbook.Worksheets("HOJA1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("HOJA1").Sort.SortFields.Add Key:=Range("B2:B936") _ , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortTextAsNumbers With ActiveWorkbook.Worksheets("HOJA1").Sort .SetRange Range("A1:O936") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("A2").Select 'ACTUALIZA FECHAS DE HOJA2 y HOJA3---------------------------------------------------------- Dim ultempresa, x, ultimaE, Y, W ultempresa = Sheets("HOJA1").Range("C" & Rows.Count).End(xlUp).Row ultimaE = Sheets("HOJA2").Range("C" & Rows.Count).End(xlUp).Row ultimaC = Sheets("HOJA3").Range("C" & Rows.Count).End(xlUp).Row For x = 2 To ultempresa If Sheets("HOJA1").Range("O" & x).Value = "1100" Then '--------------------------------------------------------------------------------------------------------- For Y = 3 To ultimaE If Sheets("HOJA1").Range("C" & x).Value = Sheets("HOJA2").Range("K" & Y).Value Then Sheets("HOJA2").Range("J" & Y).Value = Sheets("HOJA1").Range("B" & x).Value End If Next Y End If Next x For x = 2 To ultimaE If Sheets("HOJA1").Range("O" & x).Value = "1200" Then '--------------------------------------------------------------------------------------------------------- For W = 3 To ultimaC If Sheets("HOJA1").Range("C" & x).Value = Sheets("HOJA3").Range("K" & W).Value Then Sheets("HOJA3").Range("J" & W).Value = Sheets("HOJA1").Range("B" & x).Value End If Next W End If Next x Application.ScreenUpdating = True End Sub
1 Respuesta
Respuesta de Dante Amor
2