Como usar un combobox para seleccionar hojas.

Mi consulta consiste en como seria el procedimiento para usar un combobox con el fin de ir a una hoja especifica. La idea es usar una lista del combobox para seleccionar hojas que contienen resúmenes de datos.

1 Respuesta

Respuesta
1

Estoy suponiendo que tendrás un control ActiveX en la hoja ... aclarame si se trata de un Userform.

Doble clic en el control te llevará a la hoja donde lo tengas dibujado y allí copiá estas 2 rutinas:

Private Sub ComboBox1_Click()
Sheets(ComboBox1.Value).Select
End Sub
Private Sub ComboBox1_GotFocus()
ComboBox1.Clear
For Each Sh In Sheets
ComboBox1.AddItem Sh.Name
Next Sh
End Sub

Probalo y comentame.

Hola, si, se trata de un combobox en un userform que al seleccionar un nombre de esa lista me envié a la hoja que deseada. Ejemplo, Selecciono "reporte de compras" en el listbox y que me abra la hoja con ese nombre.  

Hola, si, se trata de un combobox en un userform que al seleccionar un nombre de esa lista me envié a la hoja que deseada. Ejemplo, Selecciono "reporte de compras" en el listbox y que me abra la hoja con ese nombre.  

Si es para Userform entonces estas serían las rutinas:

Private Sub UserForm_Initialize()
'x Elsamatilde
'al inicializar el UF se carga el combobox1 con nombre de hojas del libro
For Each Sh In Sheets
ComboBox1.AddItem Sh.Name
Next Sh
End Sub
Private Sub ComboBox1_Click()
'al hacer clic en algún item se selecciona la hoja
Sheets(ComboBox1.Value).Select
End Sub

Sdos!

Gracias funciona muy bien!!, Tengo una consulta mas, como seria el procedimiento para que funcione de la misma manera solo que en la lista del combobox me aparezcan solo las hojas de los reportes que quiero llamar. Por ejemplo solo deseo tener en esa lista tres items de tres hojas respectivamente; Reporte de compras, de ventas, y gastos. 

Muchas gracias Elsa por su aporte!

Es la tercer aclaración. Debes tener presente que cada nuevo agregado lleva su tiempo (tuyo y mío) en volver a leer y volver a responder. No costaba nada aclararlo todo desde un principio, ¿no te parece?

Si son pocas las hojas no hace falta hacer un bucle, directamente el evento Initialize te quedaría así:

Private Sub UserForm_Initialize()
'x Elsamatilde
'al inicializar el UF se carga el combobox1 con nombre de hojas del libro
ComboBox1.AddItem "Reporte de Compras"
ComboBox1.AddItem "Reporte de Ventas"
ComboBox1.AddItem "Reporte de Gastos"
End Sub

Y si son muchas para agregar pero solo algunas deben ser excluídas, el primer bucle puede contemplar las que no deben ser incluídas. En el ejemplo no quiero que aparezcan las llamadas Portada y Listas.

Private Sub UserForm_Initialize()
'x Elsamatilde
'al inicializar el UF se carga el combobox1 con nombre de hojas del libro
For Each Sh In Sheets
If Sh.Name <> "Portada" and Sh.Name <> "Listas" Then 
ComboBox1.AddItem Sh.Name
End If
Next Sh
End Sub

Tenés más opciones para valorar, no solamente 'buena' ;)

Sdos!

Elsa nuevamente muchas gracias!! perdón por no ser mas especifico con las preguntas lo tendré muy en cuenta!.

Mi admiración y respeto,

saludos!

Elsa nuevamente muchas gracias!! perdón por no ser mas especifico con las preguntas lo tendré muy en cuenta!.

Mi admiración y respeto,

saludos!

Elsa nuevamente muchas gracias!! perdón por no ser mas especifico con las preguntas lo tendré muy en cuenta!.

Mi admiración y respeto,

saludos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas