Rellenar ListBox con datos de varias hojas.

22/09/2007 - 17:37 por ~ jose ~ | Informe spam
Hola, que tal?
Como puedo rellenar un ListBox1 con los datos de todas las hojas de un
libro menos de la primera?.
Para rellenar los datos de una hoja empleo estas celdas:
("c6:e" & Range("b6").End(xlDown) + 5)

Venga, gracias y un saludo,
jose

Preguntas similare

Leer las respuestas

#6 Ivan
22/09/2007 - 20:43 | Informe spam
On 22 sep, 20:35, "Ivan" wrote:
¿y por que no te sirven?



Disculpa, ya me he dado cuenta en cuanto a la 2ª propuesta,

pero la 1ª propuesta, aunque no se lo que tardara, valer si vale
(excepto si el listbox no admite tantas filas

de todas formas voy a probarlo un poco

un saludo
Ivan
Respuesta Responder a este mensaje
#7 ~ jose ~
22/09/2007 - 20:46 | Informe spam
El primer ejemplo haciendo una pequeña modificación podría servir pero
tardaría muchiiiisimo ya que añade el contenido de uno en uno y si
tenemos en cuenta que son varias hojas y todas menos la última que no
está completa serían 65530 filas por 3 columnas y por el nº de hojas,
uffff, mucho tiempo.

El segúndo ejemplo me viene pero, no puedo copiar el contenido de una
hoja "llena" y pegarla en otra nueva y volver a copiar el contenido de
otra hoja "llena" y volverla a pegar en la hoja donde pegué la
anterior, lógico verdad?

Alguna sugerencia Ivan?

On 22 sep, 20:39, Ivan wrote:
¿y por que no te sirven?
Respuesta Responder a este mensaje
#8 ~ jose ~
22/09/2007 - 20:59 | Informe spam
Hola,
Esto que expongo no funciona pero por dar una idea...


With ThisWorkbook
For n = 2 To .Worksheets.Count 'Empieza el for a partir de la hoja
2
With .Worksheets(n)
Resultado = .Range("c6:e" & .Range("b6").End(xlDown).Row +
5).Value
End With
Next
ListBox1.List = Resultado
End With

Habria que hacer "algo" que el 'Resultado' se vaya acumulando y en la
última linea cargar todos los 'Resultados' de todas las hojas, me
explico?
Y si quizás hay que emplear RowSource?
Alguna idea?

Un saludo
jose

On 22 sep, 20:46, ~ jose ~ wrote:
El primer ejemplo haciendo una pequeña modificación podría servir pero
tardaría muchiiiisimo ya que añade el contenido de uno en uno y si
tenemos en cuenta que son varias hojas y todas menos la última que no
está completa serían 65530 filas por 3 columnas y por el nº de hojas,
uffff, mucho tiempo.

El segúndo ejemplo me viene pero, no puedo copiar el contenido de una
hoja "llena" y pegarla en otra nueva y volver a copiar el contenido de
otra hoja "llena" y volverla a pegar en la hoja donde pegué la
anterior, lógico verdad?

Alguna sugerencia Ivan?

On 22 sep, 20:39, Ivan wrote:



> ¿y por que no te sirven?- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#9 julian-vlc-sp
22/09/2007 - 22:05 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.

He de confesar que me he perdido en el hilo y realmente no se lo que
necesitas.

De la lectura del mensaje al que contesto, cuando dices:

, ahora lo que quiero es poder mostrar
todas las hojas (menos la primera del libro) en un listbox llamado
ListBox1 cada vez que inicie el formulario.

Entiendo que necesitas un listbox1 donde seleccionar una de las hojas de tu
libro.

Yo tengo algo parecido a ver si te sirve:

Si he entendido mal te ruego me disculpes, y aun así posteo mi propuesta por
si te sirve a ti o a algún otro.

A la columna A que la tengo oculta le he dado como nombre HojasDelLibro, en
esta columna tendremos los nombres de las hojas del libro ordenadas
alfabéticamente.

En lugar de un listbox, a la celda E10 le he aplicado lo de validación de
datos diciéndole que permito una lista cuyo origen es:

=HojasDelLibro

Ahora lo que nos falta es rellenar el rango HojasDelLibro y ordenarlo
alfabéticamente.

El procedimiento que rellena y ordena el rango también borra el contenido de
la celda E10 por si en ella tengo seleccionada alguna hoja que he borrado.

En mi libro, para agregar, eliminar o renombrar las hojas lo hago mediante
botones y por tanto mediante código, en cada uno de esos procesos después de
agregar, eliminar, o renombrar las hojas deseadas lanzo un procedimiento que
tengo en un modulo, que se llama:

LeerLasHojas()

y que pego a continuación.

Sub LeerLasHojas()

Dim hoja As Worksheet
Dim i As Long

Sheets("hoja1").Select

Range("hojasdellibro").Select
Selection.ClearContents

For Each hoja In Worksheets

If hoja.Name <> "Esta Hoja no" And hoja.Name <> "Esta hoja tampoco"
Then

i = i + 1

ActiveSheet.Range("a" & Trim(Str(i))).Value = hoja.Name

End If

Next

Range("E10").Select

Selection.ClearContents

Call OrdenarElRango

End Sub

Sub OrdenarElRango()

Range("hojasdellibro").Select

Selection.Sort Key1:=Range("hojasdellibro"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

End Sub

SALUDOS.
Julián-Valencia-España
http://ijulian.iespana.es/


"~ jose ~" escribió en el mensaje
news:
Hola,
las propuesta que expones no me sirven, cada hoja contiene 65530 filas
y puede haber más hojas iguales. El código para ir creando hojas según
la necesidad ya lo he creado, ahora lo que quiero es poder mostrar
todas las hojas (menos la primera del libro) en un listbox llamado
ListBox1 cada vez qeu inicie el formulario.

Un saludo,
jose

On 22 sep, 18:39, Ivan wrote:
aunque creo que es obvio, se me ha pasado comentar que tendrias que
llamar a la macro cuando quieras cargar el listbox, pasandole como
argumento el propio listbox (ListBox1, ListBox23, MiListbox, etc..)

un saludo
Ivan
Respuesta Responder a este mensaje
#10 julian-vlc-sp
22/09/2007 - 22:20 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.

He encontrado una versión un poco mejorada.

Para poder tener tu rango donde quieras (y no necesariamente en toda la
columna A) usa el código que te pongo a continuación:


Sub LeerLasHojas()

Dim hoja As Worksheet
Dim i As Long

i = 0

Sheets("hoja1").Select

Range("hojasdellibro").Select
Selection.ClearContents

For Each hoja In Worksheets

If hoja.Name <> "Esta Hoja no" And hoja.Name <> "Esta hoja tampoco"
Then

i = i + 1

ActiveSheet.Range("hojasdellibro").Activate
ActiveCell.Offset(i, 0).Value = hoja.Name

End If

Next

Range("E10").Select

Selection.ClearContents

Call OrdenarElRango

End Sub

Sub OrdenarElRango()

Range("hojasdellibro").Select

Selection.Sort Key1:=Range("hojasdellibro"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

End Sub


SALUDOS.
Julián-Valencia-España
http://ijulian.iespana.es/


"julian-vlc-sp" escribió en el mensaje
news:%231qMvPV$
> ¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.
>
He de confesar que me he perdido en el hilo y realmente no se lo que
necesitas.

De la lectura del mensaje al que contesto, cuando dices:

, ahora lo que quiero es poder mostrar
todas las hojas (menos la primera del libro) en un listbox llamado
ListBox1 cada vez que inicie el formulario.

Entiendo que necesitas un listbox1 donde seleccionar una de las hojas de
tu libro.

Yo tengo algo parecido a ver si te sirve:

Si he entendido mal te ruego me disculpes, y aun así posteo mi propuesta
por si te sirve a ti o a algún otro.

A la columna A que la tengo oculta le he dado como nombre HojasDelLibro,
en esta columna tendremos los nombres de las hojas del libro ordenadas
alfabéticamente.

En lugar de un listbox, a la celda E10 le he aplicado lo de validación de
datos diciéndole que permito una lista cuyo origen es:

=HojasDelLibro

Ahora lo que nos falta es rellenar el rango HojasDelLibro y ordenarlo
alfabéticamente.

El procedimiento que rellena y ordena el rango también borra el contenido
de la celda E10 por si en ella tengo seleccionada alguna hoja que he
borrado.

En mi libro, para agregar, eliminar o renombrar las hojas lo hago mediante
botones y por tanto mediante código, en cada uno de esos procesos después
de agregar, eliminar, o renombrar las hojas deseadas lanzo un
procedimiento que tengo en un modulo, que se llama:

LeerLasHojas()

y que pego a continuación.

Sub LeerLasHojas()

Dim hoja As Worksheet
Dim i As Long

Sheets("hoja1").Select

Range("hojasdellibro").Select
Selection.ClearContents

For Each hoja In Worksheets

If hoja.Name <> "Esta Hoja no" And hoja.Name <> "Esta hoja tampoco"
Then

i = i + 1

ActiveSheet.Range("a" & Trim(Str(i))).Value = hoja.Name

End If

Next

Range("E10").Select

Selection.ClearContents

Call OrdenarElRango

End Sub

Sub OrdenarElRango()

Range("hojasdellibro").Select

Selection.Sort Key1:=Range("hojasdellibro"), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

End Sub

SALUDOS.
Julián-Valencia-España
http://ijulian.iespana.es/


"~ jose ~" escribió en el mensaje
news:
Hola,
las propuesta que expones no me sirven, cada hoja contiene 65530 filas
y puede haber más hojas iguales. El código para ir creando hojas según
la necesidad ya lo he creado, ahora lo que quiero es poder mostrar
todas las hojas (menos la primera del libro) en un listbox llamado
ListBox1 cada vez qeu inicie el formulario.

Un saludo,
jose

On 22 sep, 18:39, Ivan wrote:
aunque creo que es obvio, se me ha pasado comentar que tendrias que
llamar a la macro cuando quieras cargar el listbox, pasandole como
argumento el propio listbox (ListBox1, ListBox23, MiListbox, etc..)

un saludo
Ivan





Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida