Pasar datos de un listbox de varias columnas a otro y borrar dato.

La presente es para saludarles y a la vez para hacerles la siguiente consulta:

Tengo dos listbox (listbox1 y listbox2) con 7 columnas cada uno y dos botones de comando (agregar y modificar).

Lo que hace el "botón agregar" es pasar los datos de la fila seleccionada del listbox1 ( el cual tiene varias filas) al listbox2.

He logrado pasar los datos de la fila seleccionada, pero quiero que cuando de agregar se pasen los datos seleccionados al listbox2 y se borre del listbox1.

Y si en caso me hubiera equivocado el "botón modificar" me permita pasar el dato seleccionado del listbox2 al listbox1 y borrarlo del listbox2.

Sin otro agradezco de antemano el apoyo, la atención prestada y quedo de su pronta respuesta.

Este es el codigo que uso para pasar los datos de un listbox a otro.

- Con este codigo obtengo los datos del listbox1(con un botón de comando - "buscar") este lo dejo por si tenga que ver algo con el código para borrar el dato a pasar al listbox2

items = Range("A2:J100").CurrentRegion.Rows.Count

For i = 2 To items
Sheets("OC").Select
If LCase(Cells(i, 2).Value) Like "*" & LCase(Me.TextBox1.Value) & "*" Then
Me.ListBox1.AddItem Cells(i, 8)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, 9)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, 10)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, 11)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, 12)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = Cells(i, 13)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Cells(i, 14)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Cells(i, 15)

- con este paso los datos del listbox1 al listbox2 (con el botón "agregar"

For i = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(i) Then
ListBox2. AddItem ListBox1.List(i, 0)
ListBox2. List(ListBox2.ListCount - 1, 1) = ListBox1.List(i, 1)
ListBox2. List(ListBox2.ListCount - 1, 2) = ListBox1.List(i, 2)
ListBox2. List(ListBox2.ListCount - 1, 4) = ListBox1.List(i, 3)
ListBox2. List(ListBox2.ListCount - 1, 5) = ListBox1.List(i, 4)
ListBox2. List(ListBox2.ListCount - 1, 6) = ListBox1.List(i, 5)
ListBox2. List(ListBox2.ListCount - 1, 8) = ListBox1.List(i, 6)

1 Respuesta

Respuesta
1

H o l a:

Te regreso el código actualizado.

Según tu código de carga tienes 8 columnas.

Acomodé las columnas, porque tienen que estar las mismas columnas en el listbox 1 y en el 2, de esa forma podrás regresar registros del 2 al 1.


Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    'Pasar del 1 al 2
    Dim reg As New Collection
    Set reg = Nothing
    If ListBox1.ListIndex = -1 Then
        MsgBox "Selecciona registros a pasar"
        Exit Sub
    End If
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            ListBox2. AddItem ListBox1.List(i, 0)
            ListBox2. List(ListBox2.ListCount - 1, 1) = ListBox1.List(i, 1)
            ListBox2. List(ListBox2.ListCount - 1, 2) = ListBox1.List(i, 2)
            ListBox2. List(ListBox2.ListCount - 1, 3) = ListBox1.List(i, 3)
            ListBox2. List(ListBox2.ListCount - 1, 4) = ListBox1.List(i, 4)
            ListBox2. List(ListBox2.ListCount - 1, 5) = ListBox1.List(i, 5)
            ListBox2. List(ListBox2.ListCount - 1, 6) = ListBox1.List(i, 6)
            ListBox2. List(ListBox2.ListCount - 1, 7) = ListBox1.List(i, 7)
            Reg. Add i
        End If
    Next
    For j = reg.Count To 1 Step -1
        ListBox1.RemoveItem reg(j)
    Next
    Set reg = Nothing
End Sub
'
Private Sub CommandButton2_Click()
'Por.Dante Amor
    'Regresar del 2 al 1
    Dim reg As New Collection
    Set reg = Nothing
    If ListBox2.ListIndex = -1 Then
        MsgBox "Selecciona registros a regresar"
        Exit Sub
    End If
    For i = 0 To ListBox2.ListCount - 1
        If ListBox2.Selected(i) Then
            ListBox1. AddItem ListBox2.List(i, 0)
            ListBox1. List(ListBox1.ListCount - 1, 1) = ListBox2.List(i, 1)
            ListBox1. List(ListBox1.ListCount - 1, 2) = ListBox2.List(i, 2)
            ListBox1. List(ListBox1.ListCount - 1, 3) = ListBox2.List(i, 3)
            ListBox1. List(ListBox1.ListCount - 1, 4) = ListBox2.List(i, 4)
            ListBox1. List(ListBox1.ListCount - 1, 5) = ListBox2.List(i, 5)
            ListBox1. List(ListBox1.ListCount - 1, 6) = ListBox2.List(i, 6)
            ListBox1. List(ListBox1.ListCount - 1, 7) = ListBox2.List(i, 7)
            Reg. Add i
        End If
    Next
    For j = reg.Count To 1 Step -1
        ListBox2.RemoveItem reg(j)
    Next
    Set reg = Nothing
End Sub

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

¡Muchas Gracias!!!!!!! dante me era lo que buscaba. 

disculpa la demora en la respuesta es que estaba en otras cosas

Al final de mi respuesta hay un botón para valorar la respuesta "Votar" o "Excelente", si tienes más dudas puedes solicitar más información, de lo contrario podrías cambiar la valoración.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas