Evitar ver como se ejecuta una macro

Tengo una macro muy larga:

Sub Actualizar_Datos()
'
' Actualizar_Datos Macro
Application.ScreenUpdating = False
Sheets("Matriz_Controles").Select
Range("A3:T151").Select
Selection.Copy
Sheets("Matriz").Select
Range("A3").Select
ActiveSheet.Paste
Range("A4").Select
Sheets("BASE(Matriz)").Select
Range("G1:J1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("BASE_DATOS(TD)").Select
Range("BASE_DATOS[[#Headers],[Cumplimiento]]").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Replace What:="No aplica", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Sheets("TD_IND").Select
Range("C5").Select
Application.CutCopyMode = False
ActiveSheet.PivotTables("TDBuscarControlesIND").PivotCache.Refresh
Range("H5").Select
ActiveSheet.PivotTables("EjecuciónIND").PivotCache.Refresh
Range("O6").Select
ActiveSheet.PivotTables("ImportanciaIND").PivotCache.Refresh
Sheets("DASHBOARD_TEAM").Select
Range("e5").Select
ActiveSheet.PivotTables("DesempeñoTeam").PivotCache.Refresh
Sheets("TD_TEAM").Select
Range("B2").Select
ActiveSheet.PivotTables("ControlesTeam").PivotCache.Refresh
Sheets("CONTROLES_TEAM").Select
Range("G3").Select
ActiveSheet.PivotTables("ImportanciaTEAM").PivotCache.Refresh
Range("n7").Select
ActiveSheet.PivotTables("EjecuciónTeam").PivotCache.Refresh
Application.Run "Matriz_Controles.xlsm!Ranking"
Sheets("Correos").Select
Range("B3").Select
ActiveCell.FormulaR1C1 = "=Matriz!R[-1]C[97]"
Range("M11").Select
ActiveSheet.PivotTables("Correos").PivotCache.Refresh
Application.Run "Matriz_Controles.xlsm!Controles"
Range("I6").Select
Sheets("Inicio").Select
Range("A1").Select
Application.ScreenUpdating = True
End Sub

Y con Application. ScreenUpdating tenia la intenscion de evitar el parpadeo de como se ejecuta la macro, pero no conseguí mi objetivo, ¿qué me hace falta para evitar que se muestre parte del proceso de ejecución?

2 respuestas

Respuesta
1

Tienes demasiados select que además de ser innecesarios alentan la macro, en ocasiones como en el caso de refrescar tablas Exdel va ingorar la instrucción screenupdating, te modifique la macro quitándole los select y diciéndole que sin salir de la hoja donde corras la macro haga las modificaciones en las demás hojas con eso debe reducirse el parpadeo de la pantalla

Sub Actualizar_Datos()
'
' Actualizar_Datos Macro
Application.ScreenUpdating = False
Sheets("Matriz_Controles").Range("A3:T151").Copy
Sheets("Matriz").Range("A3").ActiveSheet.Paste
Sheets("BASE(Matriz)").Range("G1:J1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("BASE_DATOS(TD)").Select
Range("BASE_DATOS[[#Headers],[Cumplimiento]]").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Replace What:="No aplica", Replacement:=""
Sheets("TD_IND"). PivotTables("TDBuscarControlesIND"). PivotCache. Refresh
Sheets("TD_IND"). PivotTables("EjecuciónIND"). PivotCache. Refresh
Sheets("TD_IND"). PivotTables("ImportanciaIND"). PivotCache. Refresh
Sheets("DASHBOARD_TEAM"). PivotTables("DesempeñoTeam"). PivotCache. Refresh
Sheets("TD_TEAM"). PivotTables("ControlesTeam"). PivotCache. Refresh
Sheets("CONTROLES_TEAM"). PivotTables("ImportanciaTEAM"). PivotCache. Refresh
Sheets("CONTROLES_TEAM"). PivotTables("EjecuciónTeam"). PivotCache. Refresh
Application.Run "Matriz_Controles.xlsm!Ranking"
Sheets("Correos").ActiveCell.FormulaR1C1 = "=Matriz!R[-1]C[97]"
Sheets("Correos"). PivotTables("Correos"). PivotCache. Refresh
Application.Run "Matriz_Controles.xlsm!Controles"
Sheets("Inicio").Select
Application.ScreenUpdating = True
End

¡Gracias! Se ve muy bueno y optimizado el código, el problema es que cuando lo reemplacé me dice: Se ha producido un error"438"

En el tiempo de ejecución y se señala en amarillo.. como puedo arreglar esto, que es lo que pasa

Sheets("Matriz").Range("A3").ActiveSheet. Paste
Respuesta

En primer lugar te recuerdo que la consulta Ocultar hojas sin dañar macros sigue aún pendiente de que la finalices o comentes si es que necesitas que te ajuste la macro.

Creo haberte recomendado el video 11 de mi canal. También podrías leer el mismo tema desde mi blog: https://elsamatilde.blogspot.com/2018/09/como-mejorar-u-optimizar-nuestra.html

Donde en el punto 4 comento la no necesidad de seleccionar antes de cada acción... al seleccionar estás moviendote de hoja o incluso de libro y es allí donde no siempre se puede evitar el ver el movimiento con tu instrucción.

Ajustá tu macro y luego dejala escrita aquí para revisarla si aún te presenta alguna dificultad.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas