Macro para recorrer hojas en un libro de Excel
En la actualidad debemos ser mas eficientes al momento de trabajar en un libro de excel, y una de las mejores formas de hacerlo eficientemente es trabajar con macros.
Las macros nos pueden facilitar mucho las cosas al momento de trabajar.
El día de hoy les explicaré como crear una macro para recorrer todas las hojas de un libro.
Para poder crear esta macro, en nuestro libro necesitamos seguir los siguientes pasos:
1. Abrir el editor Visual Basic para Aplicaciones (VBA).
2. en la cinta de opciones en el menú Insertar… módulo
3. dentro del módulo:
A) creamos el nombre de nuestra macro:
B) Declaramos los tipos de variables:
C) Contamos las hojas que existen con la instrucción “Worksheets.Count” y lo guadarmos en una variable que llamaremos “Numero_Hojas”:
D) Creamos un ciclo para recorrer las hojas.
Comenzamos con un For y la variable i y las veces que se va a ejecutar el ciclo lo establecemos con Numero_Hojas, que es el número de hojas que tenemos
Dentro del ciclo vamos a colocar la instrucción que nos va a enviar un mensaje con el nombre de la hoja con las intrucciones “MsgBox” para enviar el mensaje y “Worksheets(I).Name” para obtener el nombre de la hoja.
Cerramos el ciclo con un Next
4. Al final nuestra macro va a quedar de la siguiente manera:
Las macros nos pueden facilitar mucho las cosas al momento de trabajar.
El día de hoy les explicaré como crear una macro para recorrer todas las hojas de un libro.
Para poder crear esta macro, en nuestro libro necesitamos seguir los siguientes pasos:
1. Abrir el editor Visual Basic para Aplicaciones (VBA).
2. en la cinta de opciones en el menú Insertar… módulo
3. dentro del módulo:
A) creamos el nombre de nuestra macro:
Sub Recorrer_Hojas()
B) Declaramos los tipos de variables:
Dim Numero_Hojas As Integer 'integer por que es numerico Dim i As Integer 'integer por que es númerico
C) Contamos las hojas que existen con la instrucción “Worksheets.Count” y lo guadarmos en una variable que llamaremos “Numero_Hojas”:
Numero_Hojas = Worksheets.Count
D) Creamos un ciclo para recorrer las hojas.
Comenzamos con un For y la variable i y las veces que se va a ejecutar el ciclo lo establecemos con Numero_Hojas, que es el número de hojas que tenemos
For i = 1 To Numero_Hojas
Dentro del ciclo vamos a colocar la instrucción que nos va a enviar un mensaje con el nombre de la hoja con las intrucciones “MsgBox” para enviar el mensaje y “Worksheets(I).Name” para obtener el nombre de la hoja.
MsgBox Worksheets(I).Name
Cerramos el ciclo con un Next
Next i
E) Cerramos nuestra macro con un End Sub
4. Al final nuestra macro va a quedar de la siguiente manera:
Sub Recorrer_Hojas() Dim Numero_Hojas As Integer Dim I As Integer 'Establecer Numero_Hojas igual al número de hojas de trabajo en el libro activo. Numero_Hojas = Worksheets.Count ' Comenzado el ciclo For I = 1 To Numero_Hojas ' Inserta tu código ' La siguiente línea muestra cómo hacer referencia a una hoja dentro de ' el bucle mostrando el nombre de la hoja de trabajo en un cuadro de diálogo. MsgBox Worksheets(I).Name Next I End Sub
No recorre las hojas solo me envia un mensaje con el nombre de cada una de las hojas pero siempre se queda en la primera hoja
ResponderBorrarHola Angel, por favor me puedes mostrar el código que estás usando
BorrarHola. Si recorre las hojas, y muestra un mensaje con el nombre de cada hoja al recorrerlas, es lo que hace la macro, si de deseas algo más debes programar que quieres que haga en y/o con cada hoja. Si quieres que te seleccione cada hoja debes darle. Sheets(Worksheets(I).Name).Select dentro del for para que la seleccione además de mostrar su nombre.
BorrarHola. Según veo hacemos cosas similares, tal vez podemos aunar esfuerzos si te interesa, para maximizar resultados, me avisas. +57 315 4383999 WhatsApp. Este es uno de mis blogs https://compulgpost.blogspot.com/
ResponderBorrarTu formulario de contacto no funciona. O si lo hace no pareciera hacerlo.
Si tiene razon Angel, no hay numero de lo que contO
ResponderBorrarsi recorre las hojas, por ejemplo, para que lo notes, puedes reemplazar usar este código
ResponderBorrarMsgBox Worksheets(I).Name
y puedes usar este código
Worksheets(I).Select
Range("B1").select
de esta manera lo vas a notar