Se puede usar Sheets.Count con dos libros diferentes

Una consulta.

Quiero trabajar con dos libros diferentes, los cuales tienen hojas de calculo con nombre cada una, solo que tengo un libro de la A hasta la M y otro de la N a la Z, con el código sheets.count, carga a mi combobox1 que esta en mi hoja menu y me permite seleccionar la hoja que requiero,( el menu esta en el libro uno de la A a la M) y mi consulta es como cargar a mi combobox1 los nombres de las hojas de mi libro 2 y de igual manera ir a la hoja elegida del libro dos que es de la N a la Z.

_Graccias mil

Jesús

1 Respuesta

Respuesta
1

'... con el código Sheets.Count...'

Como no dejaste tu código me ajustaré a esta opción, aunque es posible hacer otro tipo de bucles del tipo: For Each sh In Sheets

For i = 1 to workbooks(libro2).sheets.count

combobox1.additem workbooks(libro2).sheets(i).name
next i

Para seleccionarlo, tendrás que evaluar si el valor del combo es superior a M o evaluar el nro de índice del control. Aquí utilicé el valor:

Private Sub ComboBox1_Change()

if combobox1.value > "M" then

Workbooks(libro2).sheets(combobox1.value).select

else

Sheets(combobox1.Value).Select

end if

End Sub


Podés asignar previamente el nombre de tu 2do libro a la variable 'libro2' o directamente reemplazarla por el nombre completo, por ej:

Workbooks("LibroN-Z.xlsm").sheets(combobox1.value).select


Si algo queda sin resolverse podés solicitar aclaraciones y en ese caso adjunta x favor tu macro para ajustarla.


Sra.Elsa:

Tiene toda la razón no puse el código. El código es el siguiente :

Private Sub ComboBox1_Enter()
'En caso de error, que continúe
On Error Resume Next
'Esto se producirá cuando nos
'situemos sobre el combobox1
'antes quitaremos todo lo que haya en el combobox1
ComboBox1.Clear
'Vamos a llenar dinámicamente el combobox
'con los nombres de las hojas
For i = 1 To Sheets.Count
'Añadimos los nombres de las hojas al combobox
ComboBox1.AddItem Sheets(i).Name
Next
End Sub
Private Sub CommandButton1_Click()
'En caso de error, que continúe
On Error Resume Next
'leemos lo que nos devuelven los combobox
hoja_elegida = ComboBox1.List(ComboBox1.ListIndex)
'vamos a la hoja elegida
'Eliminamos el userform de la memoria
Unload UserForm1
End Sub

El bucle que no pongo con negrillas solo lee lo que esta en el libro 1 , y lo que yo quiero es que lea también el libro dos para que cargue al combobox1 el nombre de los dos libros , el libro 1 de la A a la M y el libro 2 de la N a la Z.

Ayuda por favor

Gracias

Jesus

Te dejo las 2 rutinas arregladas.

Si vas a utilizar una variable para el nombre del libro debe ser declarada pública porque se utiliza en las 2 rutinas.

Public libro2 As String
Private Sub ComboBox1_Enter()
libro2 = "FuncionesExcel_2003_al_2010.xls"
'En caso de error, que continúe
On Error Resume Next
'Esto se producirá cuando nos
'situemos sobre el combobox1
'antes quitaremos todo lo que haya en el combobox1
ComboBox1.Clear
'Vamos a llenar dinámicamente el combobox
'con los nombres de las hojas
For i = 1 To Sheets.Count
'Añadimos los nombres de las hojas al combobox
ComboBox1.AddItem Sheets(i).Name
Next
'ahora sigo con el 2do libro
For i = 1 To Workbooks(libro2).Sheets.Count
'Añadimos los nombres de las hojas al combobox
ComboBox1.AddItem Workbooks(libro2).Sheets(i).Name
Next
End Sub
Private Sub CommandButton1_Click()
'En caso de error, que continúe
On Error Resume Next
'leemos lo que nos devuelven los combobox
hoja_elegida = ComboBox1.List(ComboBox1.ListIndex)
'vamos a la hoja elegida
If hoja_elegida > "M" Then Workbooks(libro2).Activate
ActiveWorkbook.Sheets(hoja_elegida).Select
'Eliminamos el userform de la memoria
Unload UserForm1

Sra Elsa

Acomode el código según los nombres de mis libros pero no funciona. le paso nuevamente el código modificado para que me lo revise por favor

Public Buscarhoja2 As String
Private Sub ComboBox1_Enter()
Buscarhoja2 = "FuncionesExcel_2003_al_2010.xls"
'En caso de error, que continúe
On Error Resume Next
'Esto se producirá cuando nos
'situemos sobre el combobox1
'antes quitaremos todo lo que haya en el combobox1
ComboBox1.Clear
'Vamos a llenar dinámicamente el combobox
'con los nombres de las hojas
For i = 1 To Sheets.Count
'Añadimos los nombres de las hojas al combobox
ComboBox1.AddItem Sheets(i).Name
Next
'ahora sigo con el 2do libro
For i = 1 To Workbooks(Buscarhoja2).Sheets.Count
'Añadimos los nombres de las hojas al combobox
ComboBox1.AddItem Workbooks(Buscarhoja2).Sheets(i).Name
Next
End Sub
Private Sub CommandButton1_Click()
'En caso de error, que continúe
On Error Resume Next
'leemos lo que nos devuelven los combobox
hoja_elegida = ComboBox1.List(ComboBox1.ListIndex)
'vamos a la hoja elegida
If hoja_elegida > "M" Then Workbooks(Buscarhoja2).Activate
ActiveWorkbook.Sheets(hoja_elegida).Select
'Eliminamos el userform de la memoria
Unload UserForm1
End Sub

Por si acaso mi libro1 esta con el nombre buscarhoja1 y mi libro2 esta con el nombre buscarhoja2

Le agradezco un montón por su ayuda tan gentil

Jesús Martinez

Para empezar el 2do libro debe estar abierto... sino primero tendrás que abrirlo y luego correr las instrucciones.

Buscarhoja2 es una variable que guarda el nombre de tu 2do libro... seguramente no se trata del de Funciones ya que ese es un libro mío, allí tenés que colocar el nombre real de tu 2do libro

Buscarhoja2 = "Segundo Libro de Jesús.xls"

Y por último las hojas se llaman A... M en el libro1 y N.. Z en el 2do, según tu consulta original. Verifica también esto.

Con todo esto revisado y ajustado no puede fallar.

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas