Excel - Pasar columnas a listbox

   
Vista:

Pasar columnas a listbox

Publicado por Edgar (16 intervenciones) el 20/05/2008 19:55:07
Hola, necesito un poco de ayuda para saber como pasar el contenido de 7 columnas de excel a un listbox en una form, y que dentro del listbox me lo despliegue como columnas. Pero eso no es todo, no solo quiero agregar una linea, sino un numero no determinado de lineas a ese listbox... algo como lo que se hace con la propiedad Additem. Alguien tiene alguna idea??

Saludos y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasar columnas a listbox

Publicado por Abraham Valencia (2418 intervenciones) el 20/05/2008 20:42:37
En realiad no das muchos detalles, por lo que supondre algunas cosas... pero antes, una aclaracion: Mediante AddItem, hasta donde recuerdo, no podrias. Eso si, si tu rango no fuera variable, con RowSource seria suficiente; pero, ya que no es asi, necesitas usar Arrays y la propiedad List:

- Supondre que son 4 columnas
- Que la primera columna es la A
- Que en la columna A, entre fila y fila no hay celdas vacias

Dim totaldatos As Long, datos
Dim vuelta As Long, c As Byte

totaldatos = Application.WorksheetFunction.CountA(Worksheets("hoja3").Range("a:a"))
ReDim datos(totaldatos, 3)

vuelta = 0

For c = 1 To totaldatos

datos(vuelta, 0) = Cells(c, 1)
datos(vuelta, 1) = Cells(c, 2)
datos(vuelta, 2) = Cells(c, 3)
datos(vuelta, 3) = Cells(c, 4)
vuelta = vuelta + 1
Next c

ListBox1.ColumnCount = 4
ListBox1.ColumnWidths = "20;50;20;50"
ListBox1.List() = datos

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar columnas a listbox

Publicado por edgar (16 intervenciones) el 20/05/2008 22:50:39
Una ves mas gracias Abraham, en el codigo que muestras, para que usas la propiedad CountA?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar columnas a listbox

Publicado por JuanC (792 intervenciones) el 21/05/2008 00:12:02
Otra forma de hacer lo mismo...

Dim Mx As Variant
Mx = [A1:D2]
With ListBox1
.ColumnCount = 4
.ColumnWidths = "20;50;20;50"
.List = Mx
End With
If IsArray(Mx) Then Erase Mx

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar columnas a listbox

Publicado por Abraham Valencia (2418 intervenciones) el 21/05/2008 00:18:44
Uso el CountA para ver cuantas filas estan llenas y en base a eso saber el limite vertical del array. Por eso te mencione que se suponia que no habia filas vacias entre las filas llenas

Para temrinar, no olvides que mi solucion es si tu rango es variable y no quieres modificar constantemente el codigo, de no ser variable o no importante modificar el codigo, pues, usar la prpiedar RowSource del listbox, o la solucion de mi amigo JuanC

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar columnas a listbox

Publicado por GALILEOGALI (107 intervenciones) el 21/05/2008 01:02:26
Private Sub UserForm_Initialize()

Dim totaldatos As Long, datos
Dim vuelta As Long, c As Byte

totaldatos = Application.WorksheetFunction.CountA(Worksheets("hoja1").Range("a:a"))

datos = Hoja1.Range("A1:D" & totaldatos).Value

ListBox1.ColumnCount = 4
ListBox1.ColumnWidths = "20;50;20;50"
ListBox1.List() = datos
End Sub
Prepare el codigo antes de ver la respuesta de JuanC, pero bueno, Mas de lo mismo.......
GALILEOGALI
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar columnas a listbox

Publicado por edgar (16 intervenciones) el 21/05/2008 15:57:07
Se los agradezco mucho a todos, su codigo me fue muy util!!!

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar