.
En un post anterior se explicó como listar hojas de excel y llenar combobox activex o incrustado en Excel, ahora te voy a mostrar como lograr algo parecido, pero en vez de usar un combobox incrustado en Excel o activex, el combobox va a estar en un formulario o userform de VBA, en otras palabras en esta macro de Excel o procedimiento de VBA voy a explicar como hacer un listado de hojas de Excel y llenar un combobox con ellas, si lo que quieres es recorrer las hojas y hacer un resumen con los datos extraídos de las hojas, deberías ver el link.
Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.
Cuando un libro cuenta con 20 o más hojas, con menos también; dependiendo de la complejidad del libro, se hace indispensable contar con una hoja que resuma el nombre de la totalidad de hojas del libro y que tenga un combobox con el listado de todas las hojas, donde se pueda seleccionar la hoja que se necesite y automáticamente se desplace hacia ella; desde luego que lo explicado se puede adaptar al libro con el cual trabajamos, el código o Macro de VBA determina cual es el nombre de cada una de las hojas del libro de Excel y hace un listado de todas sin tener que modificar el código.
El ejemplo consiste en una macro o procedimento de VBA que hace un listado de todas las hojas del libro, es decir determina su nombre; luego las agrega en un combobox insertado en userform, si quieres ver un ejemplo, pero de combobox incrustadoen hoja de excel click acá.
MASTERCARD PAYONEER |
Desde el link del final se puede descargar el archivo de ejemplo de esta manera podrás ver su funcionamiento en forma más detallada. El código de VBA o Macro de Excel que se presenta más abajo lista las hoja del libro de excel y las presenta en un combobox para que puedan ser seleccionadas y desplazarse hacia ellas sin gran esfuerzo; esta macro que tiene utilidad cuando se trabaja con libros con muchas hojas o se tiene algún aplicativo basado en Excel y se da la opción al usuario de eligir realizar una determinada carga de datos y mediante el combobox seleccionar la hoja necesaria.
Al cargarse el userform se inicia la macro, haciendo un bucle y recorriendo todas las hojas desde la primera hasta la última del libro de Excel, una vez realizado esto, carga el nombre de cada una de las hojas del libro en el combobox que está inserto en el userform o formulario; una vez listadas las hojas quedan en condiciones de ser seleccionadas y la macro automáticamente cambia el foco a la hoja que se seleccione, existe otra versión que realiza algo parecido yo diría casi idéntico, la diferencia radica en que en vez de un formulario con un combobox, el combobox que lista las hojas de Excel, está inserto en la misma hoja de Excel.
El ejemplo presentado tiene en cierta medida una relación con la macro que busca un dato en todas las hojas del libro y hace un lista de las hojas donde lo encontró, es decir lista todas las hojas en donde se halló el dato buscado, es bastante interesante ya que no solo busca un dato en hoja como normalmente se requiere, sino que lo buscan en todas las hojas del libro y además lista en que hoja encontró el dato buscado.
En el link del final podrás descargar el ejemplo y adaptarlo a lo que necesites, en resumen la macro lista las hojas y las agrega a un combobox que está en un formulario de VBA.
Código que se debe insertar en un formulario
Private Sub ComboBox1_Change()
On Error Resume Next
Application.ScreenUpdating = False
‘Ir a la hoja
Irhoja = ComboBox1
Sheets(Irhoja).Select
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim hoja As Worksheet
ComboBox1.Clear
For Each hoja In Worksheets
Mysheet = hoja.Name
ComboBox1.AddItem Mysheet
Next
End Sub
Código a insertar en un módulo
Sub muestrauserform()
UserForm1.Show
End Sub
.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends