4 formas de acelerar y optimizar tus macros de Excel

Acelerar los macros en excel

Las macros nos sirven para automatizar tareas que usaremos de forma frecuente. Son instrucciones que se guardan en Excel y que podemos ejecutar cuando nos haga falta. Nos ahorrará mucho tiempo el trabajar con marcos, pues no tendremos que repetir siempre las mismas tareas, bastará con ejecutar una macro que hemos creado una vez.

Sin embargo, trabajar con macros en Excel también tiene sus puntos negativos y es que a veces, se tarda mucho tiempo en ejecutarlos, porque poseen demasiadas líneas de código y el ordenador se vuelve más lento con lo que tenemos que esperar mucho tiempo para obtener la respuesta. Esto se produce porque tenemos demasiado líneas de código y no se encuentran optimizadas.

Si conseguimos que una macro se ejecute de la forma más rápida posible, conseguiremos que el ordenador no esté ocupado tanto tiempo trabajando en eso y con ello tampoco nos cansaremos de la espera. Si la espera es larga al final, Excel en vez de ayudarnos en nuestra actividad, haciéndonos el trabajo más fácil y rápido, hará lo contrario.  Por ello, en este artículo queremos mostrarte  4 formas de acelerar y optimizar tus macros de Excel.

  1. Reducir las líneas de código. En primer lugar, este es un consejo que se aplicaría a todo lo que vamos a decir a continuación y se basa en la idea de que si una instrucción se puede hacer con menos líneas de códigos, se debe hacer porque cuanto menos código tengamos en la macro, más rápido se ejecutará y es lo que perseguimos.
  2. No la instrucción Select. Si no es necesario, se debe evitar la instrucción Select. Muchas veces vemos que aparece Select y Selection que lo que está diciendo es que se seleccione la celda y además el contenido. No es necesario y haría la ejecución de la macro más lenta. Así por ejemplo, en vez de utilizar:

Range(“B8″).Select

Selection.Copy

Range(“D9″).Select

ActiveSheet.Paste

 Se ejecutaría de forma más rápida sólo con la única línea de código siguiente:

Range(“B8″).Copy Range(“D9”)

 3. Copy/ paste. Copiar y pegar (copy-paste) usarlo sólo cuando sea necesario porque existen alternativas que hará la ejecución de la macro más rápida. Así, nos podemos encontrar con distintas situaciones.

  • Que no queramos copiar formatos ni fórmulas de las celdas. En este caso, bastará con poner un signo igual entre los dos rangos de Excel que pueden ser una sola celda o varias.

Ejemplo:



Range("H9").Select
Selection.Copy
Range("J5").Select

ActiveSheet.Paste

Podríamos sustituirlo y por lo tanto, optimizarlo con esta única línea de código:

Range("H9") = Range("J5")

  • Pero si lo que queremos es copiar también los formatos y las fórmulas de las celdas de excel, a la versión optimizada tendríamos que incluirle “destination”. Así, quedaría el ejemplo anterior:

 Range("H9").Copy destination:= Range("J5")

  • Por último, si no podemos usar ninguna de estas formas optimizadas y tenemos que usar copiar y pegar (copy/paste), deberíamos limpiar el portapapeles después de hacerlo, que es donde se guarda todo lo que hemos copiado. De esta forma, vaciaremos un poco la memoria RAM del ordenador y así éste trabajará más rápido. Para hacer esto, bastaría con incluir la siguiente línea en el código:

Application.CutCopyMode = False

 

  1. With-end with. Si vamos a realizar varias acciones sobre un rango de celdas o un objeto, lo mejor es sustituirlo por with-end with, así no hay que referenciar un objeto muchas veces y se mejora el rendimiento, con lo que aceleramos las macros.

Así por ejemplo, si queremos aplicar a un rango de celdas, negrita y un tamaño de fuente de tamaño 10 tendríamos algo así:

Range("G10:G15").Select
Selection.Font.Bold = True
Selection.Font.Size = 10
Selection.Font.UnderLine = xlUnderlineStyleDoubleAccounting

Y si quisiéramos optimizarlo haríamos lo siguiente, incluyendo With y end with al final:

With Range("A1:A5").Font
.Bold = True
.Size = 10 'tamaño de fuente
.UnderLine = xlUnderlineStyleDoubleAccounting
End With

Estos son solo algunos trucos de excel para acelerar y optimizar tus macros en Excel.

  • ¿Te ha servido de ayuda?
  • No