Macros en Excel

C贸mo ejecutar una macro de Excel N veces o c贸mo repetir una macro varias veces sin tener que hacerlo una por una.

Raymundo Ycaza
#Excel Avanzado#Macros (VBA)#Productividad#Trucos Excel#馃 Automatizaci贸n con Excel

En un entorno tan ajetreado como el nuestro y en una 茅poca en la que el tiempo cada vez parece m谩s escaso, se hace necesario (y mucho) contar con herramientas, t茅cnicas o inclusive trucos bajo la manga que sean capaces de ayudarnos a realizar nuestras tareas cotidianas en el menor tiempo que sea posible.

驴O t煤 eres la excepci贸n?

Incluso, cuando ya hemos logrado encontrar esa herramienta, ese truco, o esa macro de Excel que nos ayuda a realizar un mont贸n de trabajo en poco tiempo, podemos sorprendernos a nosotros mismos a煤n realizando tareas repetitivas que podr铆amos sacarnos de encima para que la soluci贸n sea completa.

Un claro ejemplo de esto, es el tener que repetir dos, tres, cinco, diez o hasta cincuenta veces una macro que hace un mont贸n de trabajo; pero que necesita ser ejecutada m谩s de una vez, por la raz贸n que sea.

Imag铆nate poder decirle a Excel que ejecute esa macro que hace todo el cuadre y la repita 49 veces, mientras t煤 vas por un caf茅 a relajarte o te diriges al otro piso a buscar ese informe para tu siguiente tarea.

驴Verdad que suena bien?

En esta entrada voy a mostrarte c贸mo puedes ejecutar tu macro una cantidad indeterminada de veces, sin que tengas que estar en esa silla haciendo clics toda la tarde.

CLIC EN LA IMAGEN PARA VER EL V脥DEO

驴C贸mo entrar en un ciclo repetitivo? Conociendo a los bucles.

Bien, quedemos de acuerdo en algo. Ya tenemos una idea de lo que son las macros y estamos utilizando una (esa es la idea de esta entrada).

Ahora, lo que necesitamos es que esa macro que ya estamos utilizando, se ejecute la primera vez, cuando t煤 la actives, y adem谩s se repita un n煤mero 鈥榥鈥 de veces.

Pero 驴c贸mo se logra esto?

Pues colocando a una macro dentro de una porci贸n de c贸digo que se ejecute una y otra vez, tantas veces como t煤 lo quieras.

A estas porciones de c贸digo se las conoce como bucles.

Lo 煤nico que necesitas es colocar el nombre de la macro dentro de un bucle, indicarle cu谩ntas veces quieres que se ejecute el bucle y el resto es cruzarse de brazos hasta que termine.

Creando mi primer bucle.

Comenzaremos con algo sencillo. Vamos a mostrar la leyenda: 鈥淓stoy escribiendo la l铆nea 鈥 y le vamos a poner al final un n煤mero que indicar谩 el n煤mero de veces que se ha ejecutado la macro.

Para escribir la l铆nea, usaremos la instrucci贸n 鈥楧ebug.Print鈥 seguida del texto entre comillas.

Utilizaremos la variable i (la llamaremos 鈥榠鈥 por aquello de que iteraci贸n comienza con i) de manera que nos sirva como una especie de 鈥榗ontador de vueltas鈥 para cada ejecuci贸n del bucle.

Luego, utilizaremos la estructura de control FOR, para ejecutar un bucle que realizar谩 el mismo trabajo un total de diez veces.

Para esto, en la estructura FOR, le indicamos que la variable 鈥榠鈥, tomar谩 el valor desde 1 hasta 10 y quedar谩 entendido que aumentar谩 de uno en uno hasta llegar a su valor m谩ximo.

El c贸digo quedar铆a como 茅ste:

Sub MiPrimerBucle()

Dim i As Integer

For i = 1 To 10 Debug.Print 鈥淓stoy escribiendo la l铆nea 鈥 & i Next i

End Sub

F铆jate como estoy utilizando FOR para iniciar el bucle y NEXT para cerrarlo e indicarle a Excel que todo lo que est茅 entre estas dos marcas, deber谩 repetirse tantas veces como indique la l铆nea FOR.

El c贸digo que estamos ejecutando es sencillo. Con Debug.Print estamos escribiendo un texto que luego concatenamos con la variable 鈥榠鈥, para lo cual usamos el operador de concatenaci贸n 鈥&鈥.

Una vez terminada la ejecuci贸n, en la ventana 鈥業nmediato鈥 se mostrar谩 el resultado del bucle, es decir, 10 l铆neas que se diferencian 煤nicamente por el n煤mero al final:

Estoy escribiendo la l铆nea 1 Estoy escribiendo la l铆nea 2 Estoy escribiendo la l铆nea 3 Estoy escribiendo la l铆nea 4 Estoy escribiendo la l铆nea 5 Estoy escribiendo la l铆nea 6 Estoy escribiendo la l铆nea 7 Estoy escribiendo la l铆nea 8 Estoy escribiendo la l铆nea 9 Estoy escribiendo la l铆nea 10

驴Ves? Tan sencillo como eso.

Pero claro, t煤 quieres ejecutar una macro. 隆Vamos por ello!

驴C贸mo implementar una macro dentro de un bucle?

En realidad, ya hicimos todo el trabajo. Aqu铆 lo 煤nico que debes hacer es reemplazar la l铆nea Debug.Print por el nombre de la macro que quieres ejecutar.

驴As铆 de f谩cil?

S铆, 隆as铆 de f谩cil!

Entonces, imaginemos que lo que quieres es ejecutar 10 veces la macro llamada 鈥楥uadreMensual鈥, utilizando el mismo c贸digo que te mostr茅 anteriormente:

Sub MiPrimerBucle()

Dim i As Integer

For i = 1 To 10 CuadreMensual Next i

End Sub

Como ves, lo 煤nico que hice fue reemplazar la parte que se encargaba de escribir la l铆nea en la ventana inmediato y puse el nombre de la macro que quiero ejecutar.

Por supuesto, si has declarado a tu macro como privada y la tienes en otro m贸dulo, entonces no podr谩s ejecutarla. Ten en cuenta eso.

驴C贸mo hacer que el n煤mero de repeticiones sea variable?

隆Claro! No siempre vas a necesitar ejecutar la macro diez veces. Puede que necesites que se repita siete veces o hasta cincuenta鈥 隆o m谩s!

Entonces, necesitamos una forma de decirle a Excel justo en el momento en que se va a ejecutar la macro, el n煤mero de veces que necesitamos que se ejecute la misma.

Esto lo vamos a hacer utilizando la instrucci贸n 鈥業nputBox鈥, de esta forma:

intVeces = InputBox("Ingresa el n煤mero de veces a repetir:", "Mi Sistema", 10)

La instrucci贸n 鈥業nputBox鈥, se encarga de mostrar una ventana en la que te pide que escribas un valor y luego lo coloca en una variable. En este caso, en la variable 鈥榠ntVeces鈥.

El primer argumento de funci贸n, es el texto que servir谩 de referencia para el usuario, es decir, la isntrucci贸n para que la persona sepa qu茅 es lo que est谩 pidiendo Excel.

El segundo argumento es el t铆tulo que quieres que aparezca en la ventana.

El tercer argumento es el valor que aparecer谩 por defecto, para que incluso te ahorres de escribirlo si vas a usar ese valor muchas veces.

Luego, para terminar, ajustamos nuestro c贸digo anterior de la siguiente forma:

Sub MiPrimerBucle()

Dim i As Integer Dim intVeces As Integer

intVeces = InputBox(鈥淚ngresa el n煤mero de veces a repetir:鈥, 鈥淢i Sistema鈥, 10)

For i = 1 To intVeces

CuadreMensual

Next i

End Sub

Como ves en el c贸digo anterior, luego de darle el valor deseado a la variable 鈥榠ntVeces鈥, la colocamos en el bucle en lugar del n煤mero 10 y as铆 tendremos un valor m谩ximo que ser谩 variable y se ajustar谩 a lo que necesitemos en cada caso y podremos manejar esas excepciones o variantes de las que no nos libramos nunca al ciento por ciento.

Conclusi贸n.

Los bucles son estructuras realmente importantes en la programaci贸n de macros y le dan una potencia tremenda a nuestros trabajos, d谩ndonos tambi茅n la flexibilidad que necesitamos como te he mostrado en este caso. No dejes de poner entre tus pendientes el estudio de las estructuras y por supuesto, no dejes de poner en pr谩ctica este ExcelConsejo que seguramente va servirte para que puedas agilizar varios de tus trabajos en la oficina.

驴Te ha gustado esta entrada?

Si quieres recibir m谩s tutoriales y consejos como 茅ste, entonces no dejes de suscribirte a la lista de correo y si ya lo has hecho, entonces puedes ayudarme a compartir esta entrada en las redes sociales para que otras personas encuentren esa soluci贸n que andan buscando.

隆Nos vemos!

[firma]

鈫 Regresar al Blog