Pasar datos multiseleccionados de un listbox a una hoja Excel

Para Dante.

Buenos días Sr. Dante. Te solicito ayuda al siguiente respecto.

Tengo un formulario con dos listbox, listbox1 y listbox2

Quisiera que al seleccionar los items que he marcado y pulsando el botón de la flecha derecha, "bt_derecha", los valores seleccionado se copien en la hoja "FrasRenting" a partir de la primera celda vacía de esa hoja, columna"R". Luego lo utilizaré para llenar el listbox2, pero por lo pronto necesito llevarme primero los datos de listbox1.

2 Respuestas

Respuesta
1

Te paso un enlace: Pasar elementos de un listbox a otro, aunque si prefieres mejor espera la respuesta de Dante seguro es más completa y te ayudara mejor.

¡Gracias! 

Tomo nota del enlace para futuras macros. Muchas gracias por contestar.

Como bien dices Dante no deja de sorprenderme con sus conocimientos tan completos, y lo sencillo que lo hace.

Gracias!!

Respuesta
1

Te anexo el código

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Set h = Sheets("FrasRenting")
    existe = False
    For i = 0 To ListBox1.ListIndex
        If ListBox1.Selected(i) Then
            existe = True
            u = h.Range("R" & Rows.Count).End(xlUp).Row + 1
            h.Cells(u, "R") = ListBox1.List(i, 0)
            h.Cells(u, "S") = ListBox1.List(i, 1)
            h.Cells(u, "T") = ListBox1.List(i, 2)
            h.Cells(u, "U") = ListBox1.List(i, 3)
            h.Cells(u, "V") = ListBox1.List(i, 4)
            ListBox1.Selected(i) = False
        End If
    Next
    If existe Then
        MsgBox "Valores copiados a la hoja"
    Else
        MsgBox "No se seleccionaron valores a copiar"
    End If
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Hola, he copiado el código y funciona perfecto.

Como siempre muy agradecido.

Estoy intentando ver el por qué de la variable "existe" para acabar de comprender el código.

Un abrazo.

Moisés.

Hola Dante.

En encontrado algo que no funciona bien. Mira que pasa.

Si selecciono los items, por ejemplo selecciono de manera salteada 6 items, me coge como referencia el ultimo item seleccionado y me copia los valores de este ultimo hacia atrás.

Por ejemplo, si selecciono hacia abajo y el ultimo que selecciono esta más arriba, me copiará desde el último más arriba hasta el primero. Pero si el ultimo que selecciono es el de más abajo me copia todos porque el ultimo seleccionado es el último de todos los seleccionados.

Así que a veces me copia 2 items y otras veces 16, depende de donde haya seleccionado el último.

No se si me he explicado bien o te he liado más y si se puede solucionar.

De todos modos muchas gracias!!

Moisés.

¿Modificaste la macro?

¿Tienes otra macro que esté guardando datos en la hoja?

La macro lee los registros de arriba hacia abajo, tal y como los tienes en el listbox, y los marcados los copiará en la hoja.

Por ejemplo, si tienes estos registros

a

b

b

No importa como hayas marcado, si marcas el "a" y después el "c", o primero "c" y luego "a", siempre te va a copiar en la hoja "a" y después "c"

La variable "existe" es para saber si por lo menos marcaste uno, si no marcaste ninguno, la variable se queda en "False"

sal u dos

Hola Dante, la macro la tengo así:

Private Sub bt_derecha_Click()
'Por.Dante Amor
    Set h = Sheets("FrasRenting")
    existe = False
    For i = 0 To ListBox1.ListIndex
        If ListBox1.Selected(i) Then
            existe = True
            u = h.Range("W" & Rows.Count).End(xlUp).Row + 1
            h.Cells(u, "W") = ListBox1.List(i, 0)
            h.Cells(u, "Z") = ListBox1.List(i, 1)
            h.Cells(u, "AA") = ListBox1.List(i, 2)
            h.Cells(u, "X") = ListBox1.List(i, 3)
            h.Cells(u, "Y") = ListBox1.List(i, 4)
            h.Cells(u, "AB") = form_FRASRenting.ComboRenting
            ListBox1.Selected(i) = False
        End If
    Next
    If existe Then
    Else
        MsgBox "No se seleccionaron valores"
    End If
End Sub

He modificado las columnas a donde me llevo los datos, únicamente y he quitado el mensaje.

Si tal y como dices selecciono primero la A y luego la B me copia así, bien, pero si copio primero la B y luego la A, solo me copia la A en la hoja. Es decir de arriba a abajo bien, pero si voy hacia abajo y luego subo hacia arriba me coje como ultimo numero a copiar el ultimo que he seleccionado.

Por ejemplo.

A

B

C

Cojo el A, luego el C y luego el B. Me coje el A y el B. El C ya no lo toma en cuenta.

Es raro.

Moisés.

Puedes poner una imagen de tu hoja, otra imagen de tu listbox antes de seleccionar casillas. Otra imagen de tu listbox después de seleccionar casillas. Y por último otra imagen de tu hoja después de presionar el botón.

También pon todo el código que tengas en tu userform

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas