¿Hay alguna forma de mejorar esta macro?

Hola expertos, ya hice unas consultas aca para crear esta macro... Necesitaría saber si hay algo que se le puede modificar/agregar/quitar para que se pueda ejecutar mas rapido.

Sub FiltrarMovDeMaquinas()

'Desactivar calculo automático
Application.Calculation = xlCalculationManual
'Apagar el parpadeo de pantalla
Application.ScreenUpdating = False
'Apagar los eventos automáticos
Application.EnableEvents = False
'si el mov se bajo en csv cambia el "." de los montos por ","
Range("h1:j8000").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
'llamar macro que limpia
LimpiaMovdeMaq
'declaración de variable para el rango de datos exportcas
Dim rangoparafiltrar As Range
Set rangoparafiltrar = Worksheets("export_cas").Range("H1:J" & (Range("H1048576").End(xlUp).Row))
'Filtrar Ticket in Ticket out
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("V1:V2"), CopyToRange:=Range("T3"), Unique:=False
'filtrar Pagos Fuera de Sistema
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("Z1:Z2"), CopyToRange:=Range("X3"), Unique:=False
'filtrar Procesos de Pagos
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("AD1:AD2"), CopyToRange:=Range("AB3"), Unique:=False
'filtrar Recupero de Poder Publico
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("AH1:AH2"), CopyToRange:=Range("AF3"), Unique:=False
'filtrar Poder Publico
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("AL1:AL2"), CopyToRange:=Range("AJ3"), Unique:=False
'filtrar Emitidos
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("AP1:AP2"), CopyToRange:=Range("AN3"), Unique:=False
'filtrar Anulados
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("AT1:AT2"), CopyToRange:=Range("AR3"), Unique:=False
'filtrar Tickets pagados en maquina
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("aX1:aX2"), CopyToRange:=Range("AV3"), Unique:=False
'filtrar Tickets pagados en caja
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("BB1:BB2"), CopyToRange:=Range("AZ3"), Unique:=False
'filtrar Recupero por anulación
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("BF1:BF2"), CopyToRange:=Range("BD3"), Unique:=False
'filtrar Recupero por vencido / anulado
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("BJ1:BJ2"), CopyToRange:=Range("bh3"), Unique:=False
'filtrar Tickets vencidos
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("bn1:bn2"), CopyToRange:=Range("bl3"), Unique:=False
'filtrar Tickets vencidos pagados
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("br1:br2"), CopyToRange:=Range("bp3"), Unique:=False
'filtrar Diferencia
rangoparafiltrar.AdvancedFilter Action:=xlFilterCopy _
, CriteriaRange:=Range("bv1:bv2"), CopyToRange:=Range("bt3"), Unique:=False
'proteger export_Cas
Sheets("Export_cas").Protect "978645312"
'activa calculo automático
Application.Calculation = xlAutomatic
'Apagar los eventos automáticos
Application.EnableEvents = True
'Prender el parpadeo de pantalla
Application.ScreenUpdating = True
End Sub
Sub LimpiaMovdeMaq()
Sheets("EXPORT_CAS").Unprotect "978645312"
'borrar datos filtrados
Range("T3:BV" & (Range("h1048576").End(xlUp).Row)).Clear
End Sub

Gracias por la ayuda.

1 respuesta

Respuesta
1

Prácticamente son puros filtros amigo, dudo que halla una manera mas rápida de hacer este proceso de macro . Aparte que con el screen update false, calculation automatic, y el de los eventos dudo que halla otra manera amigo.

Recuerda puntuar la ayuda amigo,

Hacia todos esos movimientos con formulas, concatenar y sumar.si es lo que usaba. Creía que haciendo con macros los movimientos agilizaba los cálculos. Podrías darme una mano para ver si hay otra forma de hacerlo ?

La verdad amigo no se como mejorar esta macro mas de lo que ya esta optimizada, te digo esto porque después de analizar tu código, es la misma manera como lo haría yo, de la manera que planteaste la macro, Bien hecho .

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas