............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

Rango variable para un ListBox

Ver el tema anterior Ver el tema siguiente Ir abajo

Rango variable para un ListBox

Mensaje por Roberto2010 el Miér Abr 20, 2011 11:41 pm

Hola!
Actualmente cargo un listbox con una base de datos la cual se halla en una Hoja de otro Libro: ListBox1.RowSource = "[Libro1.xls]Hoja1!" & "A2:D10000"

Pero como la base de datos varía en la cantidad de filas me gustaria que el listbox cargara o mostrara solamente las filas con datos.

Aclaro lo siguiente: en la tabla de la hoja, la columna A tiene datos hasta la fila 10000 (esto nunca varía), lo que varían son las columnas B, C y D, y éstas serían las que determinarían la última fila con datos.

Ejemplo de base de datos:
A B C D
0001 B1
0002 D2
0003 C3
0004

Para este caso quisiera entonces que el listbox mostrara los registros 0001 a 0003
Nota: en este ejemplo la columna C es la que determina la ultima fila, pero esto puede variar, siendo la B o la D
Creo que esto es un poco complicado de lograr. Ojalá me puedan ayudar. Gracias!
avatar
Roberto2010

Masculino Cantidad de envíos : 76
Edad : 41
Ciudad - Pais : ARGENTINA
Version de Excel : 2003-2007
Fecha de inscripción : 03/09/2010

Volver arriba Ir abajo

Re: Rango variable para un ListBox

Mensaje por Roberto2010 el Miér Abr 20, 2011 11:46 pm

colA..colB..colC..colD
0001..B1
0002.................D2
0003.........C3
0004

¿Se entiende?
avatar
Roberto2010

Masculino Cantidad de envíos : 76
Edad : 41
Ciudad - Pais : ARGENTINA
Version de Excel : 2003-2007
Fecha de inscripción : 03/09/2010

Volver arriba Ir abajo

Re: Rango variable para un ListBox

Mensaje por GalileoGali el Jue Abr 21, 2011 11:26 am

Proba con esto, adaptandolo
Código:
Sub ultfilaTest()
Dim rng As Range
Dim ultFila As Long

Set rng = Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns("B:D"))
    With rng
  ultFila = rng.Cells.Find("*", , , , , xlPrevious).Row
    End With
    MsgBox ultFila
End Sub

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional
avatar
GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: Rango variable para un ListBox

Mensaje por Tatayayan el Jue Abr 21, 2011 11:31 am

Hola, te ofrezco una opción rudimentaria, pero efectiva, la probé y si funcionó.

Private Sub UserForm_Initialize()
Dim Mayor As Long, i As Integer, Letras As String
Letras = "CD"
Mayor = Range("B" & Rows.Count).End(xlUp).Row
For i = 3 To 4
If Range(Mid(Letras, i - 2, 1) & Rows.Count).End(xlUp).Row > Mayor Then _
Mayor = Range(Mid(Letras, i - 2, 1) & Rows.Count).End(xlUp).Row
Next i
ListBox1.RowSource = "[Libro1.xls]Hoja1!A2:D" & Mayor
End Sub
avatar
Tatayayan
Moderador
Moderador

Masculino Cantidad de envíos : 319
Ciudad - Pais : Chamical- La Rioja - ARG
Fecha de inscripción : 20/11/2008

Volver arriba Ir abajo

Re: Rango variable para un ListBox

Mensaje por Roberto2010 el Jue Abr 21, 2011 5:58 pm

Gracias, siempre están para ayudar!, Contesto:

GalilegoGali: su código funciona bien, el tema es que no se como adaptarlo y por otro lado creo que trabaja con la hoja activa y en mi caso el rango a analizar pertence a otro libro el cual no siempre esta activo.

Tatayayan: adjunto los dos libros por si dispones de tiempo para examinarlos, el listbox no toma todas las filas.
A los dos muchas gracias.



avatar
Roberto2010

Masculino Cantidad de envíos : 76
Edad : 41
Ciudad - Pais : ARGENTINA
Version de Excel : 2003-2007
Fecha de inscripción : 03/09/2010

Volver arriba Ir abajo

Re: Rango variable para un ListBox

Mensaje por Gerson Pineda-El Catracho el Miér Abr 27, 2011 12:47 am

Hola Roberto
Prueba con esta opcion, espero te sirva

Private Sub UserForm_Initialize()

Dim CB As Long, CC As Long, CD As Long, uf As Double

With Workbooks("Libro2.xls").Sheets("Hoja1")
CB = .Range("B" & Rows.Count).End(xlUp).Row
CC = .Range("C" & Rows.Count).End(xlUp).Row
CD = .Range("D" & Rows.Count).End(xlUp).Row
uf = Application.WorksheetFunction.Max(CB, CC, CD)
End With
Me.ListBox1.RowSource = "[Libro2.xls]Hoja1!" & "A1:D" & uf

End Sub
El codigo te va a funcionar siempre y cuando sea aplicado en un libro llamado "Libro2.xls", hoja llamada "Hoja1"

Gali
Parece que con Usedrange (que no confio mucho en el) no funciona bien del todo, pegale una revisadita porfavor, pues no siempre nos da correctamente la ultima fila

Saludos desde Honduras
avatar
Gerson Pineda-El Catracho

Masculino Cantidad de envíos : 107
Edad : 39
Ciudad - Pais : SPS - Honduras
Version de Excel : 2003/2007/2010/2013
Fecha de inscripción : 02/04/2008

http://gerson-pineda-el-catracho.blogspot.com/

Volver arriba Ir abajo

Re: Rango variable para un ListBox

Mensaje por Roberto2010 el Miér Abr 27, 2011 7:03 pm

Gerson! impresionante! genial! funciona bien y es lo que pretendía. Muchas gracias por tu ayuda.
avatar
Roberto2010

Masculino Cantidad de envíos : 76
Edad : 41
Ciudad - Pais : ARGENTINA
Version de Excel : 2003-2007
Fecha de inscripción : 03/09/2010

Volver arriba Ir abajo

Re: Rango variable para un ListBox

Mensaje por Gerson Pineda-El Catracho el Miér Abr 27, 2011 7:42 pm

Ya sabes, por aqui andamos...

Saludos
avatar
Gerson Pineda-El Catracho

Masculino Cantidad de envíos : 107
Edad : 39
Ciudad - Pais : SPS - Honduras
Version de Excel : 2003/2007/2010/2013
Fecha de inscripción : 02/04/2008

http://gerson-pineda-el-catracho.blogspot.com/

Volver arriba Ir abajo

Re: Rango variable para un ListBox

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.