Pasar columnas de un listbox a otro

Logre pasar datos de un listbox, usando un código que se encuentra en una de las preguntas en este site, sin embargo no logro que pasen todas las columnas, son en total 22 columnas y el código funciona bien solo hasta la 9na columna,¿podrían por favor ayudarme? El código que use es el que sigue:

posicion = ListBox1.ListIndex
ListBox2.AddItem ListBox1.List(posicion, 0)
e = ListBox2.ListCount - 1
ListBox2.List(e, 1) = ListBox1.List(posicion, 1)
ListBox2.List(e, 2) = ListBox1.List(posicion, 2)
ListBox2.List(e, 3) = ListBox1.List(posicion, 3)
ListBox2.List(e, 4) = ListBox1.List(posicion, 4)
ListBox2.List(e, 5) = ListBox1.List(posicion, 5)
ListBox2.List(e, 6) = ListBox1.List(posicion, 6)
ListBox2.List(e, 7) = ListBox1.List(posicion, 7)
ListBox2.List(e, 8) = ListBox1.List(posicion, 8)
ListBox2.List(e, 9) = ListBox1.List(posicion, 9)
ListBox2.List(e, 10) = ListBox1.List(posicion, 10)
ListBox2.List(e, 11) = ListBox1.List(posicion, 11)
ListBox2.List(e, 12) = ListBox1.List(posicion, 12)
ListBox2.List(e, 13) = ListBox1.List(posicion, 13)
ListBox2.List(e, 14) = ListBox1.List(posicion, 14)
ListBox2.List(e, 15) = ListBox1.List(posicion, 15)
ListBox2.List(e, 16) = ListBox1.List(posicion, 16)
ListBox2.List(e, 17) = ListBox1.List(posicion, 17)
ListBox2.List(e, 18) = ListBox1.List(posicion, 18)
ListBox2.List(e, 19) = ListBox1.List(posicion, 19)
ListBox2.List(e, 20) = ListBox1.List(posicion, 20)
ListBox2.List(e, 21) = ListBox1.List(posicion, 21)
ListBox2.List(e, 22) = ListBox1.List(posicion, 22)

1 Respuesta

Respuesta
1

Solamente se pueden cargar hasta 10 columnas con el método additem, para cargar más de 10 columnas tienes que usar la propiedad List o rowsource.

Con la siguiente opción puedes cargar las 22 columnas o las que necesites:

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h = Sheets("temp")
    h.Cells.Clear
    c = ListBox2.ColumnCount
    f = ListBox2.ListCount
    If f > 0 Then
        h.Range(h.Cells(1, 1), h.Cells(f, c)) = ListBox2.List
    End If
    For i = 0 To ListBox1.ColumnCount - 1
        h.Cells(f + 1, i + 1) = ListBox1.List(ListBox1.ListIndex, i)
    Next
    ListBox2.Clear
    ListBox2.List = h.Range(h.Cells(1, 1), h.Cells(f + 1, c)).Value
End Sub

Tienes que crear una hoja llamada "temp" para que la macro la utilice para descargar y cargar el listbox2.

Si no quieres que se vea la hoja "temp" la puedes ocultar y la macro sigue funcionando.

Saludos. Dante Amor

Si es lo que necesitas.

Dante, muchisimas gracias, funciona perfectamente, disculpa la molestia, podrías por favor incicarme como hago con codigo que se cargue un rango de una hoja excel a un listbox? sucede que mando los datos de una hoja a otra segun se los genere en codigo, pero al usar la opción  list fill range la misma se modifica ya que el codigo que uso crea una nueva fila en la hoja para colocar los datos nuevos y obviamente el rango se modifica.

Muchas gracias.

Dante, muchisimas gracias, funciona perfectamente, disculpa la molestia, podrías por favor incicarme como hago con codigo que se cargue un rango de una hoja excel a un listbox? sucede que mando los datos de una hoja a otra segun se los genere en codigo, pero al usar la opción  list fill range la misma se modifica ya que el codigo que uso crea una nueva fila en la hoja para colocar los datos nuevos y obviamente el rango se modifica.

Muchas gracias.

Dante, muchisimas gracias, funciona perfectamente, disculpa la molestia, podrías por favor incicarme como hago con codigo que se cargue un rango de una hoja excel a un listbox? sucede que mando los datos de una hoja a otra segun se los genere en codigo, pero al usar la opción  list fill range la misma se modifica ya que el codigo que uso crea una nueva fila en la hoja para colocar los datos nuevos y obviamente el rango se modifica.

Muchas gracias.

Dante, muchisimas gracias, funciona perfectamente, disculpa la molestia, podrías por favor incicarme como hago con codigo que se cargue un rango de una hoja excel a un listbox? sucede que mando los datos de una hoja a otra segun se los genere en codigo, pero al usar la opción  list fill range la misma se modifica ya que el codigo que uso crea una nueva fila en la hoja para colocar los datos nuevos y obviamente el rango se modifica.

Muchas gracias.

Supongo entonces que tienes el listbox como un control activex, podrías crear una nueva pregunta con esta petición. Al final del desarrollo de la pregunta escribe que va dirigida a Dante Amor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas