Hojas de cálculo en Excel - página principal

Ejecutar varias macros a la vez

Muchos de vosotros os habréis preguntado en alguna ocasión, como se pueden ejecutar varias macros a la vez, por ejemplo al pulsar un botón que hemos creado nosotros, y donde solo podemos asociar una macro.

La respuesta como veréis, es muy sencilla, pues se trata de llamar a las macros de forma secuencial. Es decir, primero se ejecutará una macro, cuando acabe se ejecutará otra macro, cuando acabe esta otra macro se ejecutará la tercera macro, y así sucesivamente hasta llamar al último macro.

La cuestión es, cómo llamar a cada una de las macros siguientes, desde la macro que se está ejecutando en ese momento. Pues bien fácil, poniendo como última línea del macro (o penúltima si utilizamos la instrucción Application.ScreenUpdating = False como última línea), el nombre del siguiente macro. Vamos a ilustrarlo con un ejemplo.

Supongamos que tenemos esta sencilla macro que nos servirá para escribir del 1 al 10, en las celdas que van desde A1 a A10:


Sub Contar_hasta_10()
'Nos situamos en la celda A1
Range("A1").Select
For i = 1 To 10
'escribimos el número
ActiveCell = i
'bajamos una línea
ActiveCell.Offset(1, 0).Select
Next
End Sub

Ahora supongamos que queremos que cuando acabe de ejecutarse ese macro, se ejecute inmediatamente este otro, pero sin tener que volver a interactuar el usuario, es decir, lo que queremos es que se ejecute automáticamente al acabar la ejecución del primer macro:

Sub Mensaje()
'Escribimos algo en la celda actual
ActiveCell = "Este mensaje es el resultado de ejecutar el macro llamado ""Mensaje"""
End Sub

La cuestión es: ¿cómo podemos encadenar los macros para que se ejecute primero el macro llamado Contar_hasta_10, y a continuación el macro llamado Mensaje?. Pues llamando al segundo macro, en la última línea del primer macro, así:

Sub Contar_hasta_10()
'Nos situamos en la celda A1
Range("A1").Select
For i = 1 To 10
'escribimos el número
ActiveCell = i
'bajamos una línea
ActiveCell.Offset(1, 0).Select
Next
'Llamamos al macro "Mensaje"
Mensaje
End Sub

En lugar de añadir estas líneas (mirad las últimas líneas del código anterior):

'Llamamos al macro "Mensaje"
Mensaje

Podíamos haber utilizado estas otras, que sirven exactamente para hacer lo mismo, es decir, para llamar al macro "Mensaje":

'Llamamos al macro "Mensaje"
Call Mensaje

La diferencia es, que en este último caso, hemos utilizado la instrucción Call, pero podemos omitirla si lo deseamos.

Si tuviésemos un tercer macro, podríamos utilizar varias alternativas, como por ejemplo, llamar a ese tercer macro desde el segundo macro, es decir, desde el macro Mensaje, o bien llamar a ese tercer macro, desde el primer macro, es decir, desde el macro llamado Contar_hasta_10, con lo que nos bastaría añadir esa llamada al tercer macro, en la última línea del primer macro, justo después de la línea en la que llamamos al segundo macro. Parece un galimatías, pero realmente es muy sencillo.



6 comentarios:

ElProfe dijo...

Javier:

En buenahora; te "habíamos" extrañado! (un lapsus)

Muy práctica tu recomendación.

Gracias y saludos,

Manuel

Javier Marco dijo...

Gracias por tu comentario.

La verdad es que estoy algo más relajado con el blog durante los meses de julio y agosto, porque la verdad es que el calor neutraliza por completo las pocas neuronas que me quedan sanas :-)

diego dijo...

Genial y didactico

Anónimo dijo...

Hola Javier,
Te comento, estoy abriendo un pequeño negocio, un restaurante y estoy tratando de armar un libro de excel con todo lo que comentas y nos instruyes en tu blog. En lo particular, estoy tratando de hacer un punto de venta que me descuente de inventarios, con usuarios y privilegios, generación de reportes y gráficas en hojas distintas y libros y envio automático por email. Creo que es mucho trabajo pero estoy aprendiendo poco a poco con tu blog. Sin embargo, me gustaría que me ayudaras con el punto de venta, que para mi es lo más dificil
Saludos desde León, México.

*mis transacciones son en $ pesos mexicanos. Saludos.

Anónimo dijo...

no encuentro cortarypegar

Javier Marco dijo...

Se llama copiarypegar. Está en el artículo de estreno del blog (Presentación del blog).

Cuando estés en el artículo, pulsa Ctrl + F, e introduce la palabra a buscar: copiarypegar

Pulsa intro, y verás como te lleva hasta el comentario con el macro en cuestión.

Un saludo.