Selección con doble clip en un listbox

Tengo un problema con un formulario de búsqueda de vba no puedo hacer selección con 2 clip y pasar ese ítem seleccionado a otra hoja en excel, se me queda en la celda C12 y no me copia en la siguiente fila C13 el otro dato seleccionado

Private Sub CommandButton1_Click()
fila = 12
For x = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(x) = True Then
Cells(fila, 3).Value = ListBox1.List(x, 0)
'Cells(fila, 7).Value = ListBox1.List(x, 1)
Cells(fila, 9).Value = ListBox1.List(x, 2)
'Cells(fila, 9).Value = ListBox1.List(x, 3)
fila = fila + 1
End If
Next
End Sub
Private Sub TextBox1_Change()
NumeroDatos = Hoja2.Range("A" & Rows.Count).End(xlUp).Row
Hoja2.AutoFilterMode = False
Me.ListBox1 = Clear
Me.ListBox1.RowSource = Clear
y = 0
For fila = 2 To NumeroDatos
descrip = Hoja2.Cells(fila, 3).Value
   If UCase(descrip) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
   Me.ListBox1.AddItem
   Me.ListBox1.List(y, 0) = Hoja2.Cells(fila, 1).Value
   Me.ListBox1.List(y, 1) = Hoja2.Cells(fila, 2).Value
   Me.ListBox1.List(y, 2) = Hoja2.Cells(fila, 3).Value
   y = y + 1
   End If
  Next
End Sub
Private Sub TextBox2_Change()
NumeroDatos = Hoja2.Range("A" & Rows.Count).End(xlUp).Row
Hoja2.AutoFilterMode = False
Me.ListBox1 = Clear
Me.ListBox1.RowSource = Clear
y = 0
For fila = 2 To NumeroDatos
Parte = Hoja2.Cells(fila, 1).Value
   If UCase(Parte) Like "*" & UCase(Me.TextBox2.Value) & "*" Then
   Me.ListBox1.AddItem
   Me.ListBox1.List(y, 0) = Hoja2.Cells(fila, 1).Value
   Me.ListBox1.List(y, 1) = Hoja2.Cells(fila, 2).Value
   Me.ListBox1.List(y, 2) = Hoja2.Cells(fila, 3).Value
   y = y + 1
   End If
  Next
End Sub
Private Sub UserForm_Activate()
Me.ListBox1.RowSource = "PRODUCTOS"
Me.ListBox1.ColumnCount = 3
Me.ListBox1.ColumnHeads = True
Me.ListBox1.ColumnWidths = "50;35;180"
End Sub

1 respuesta

Respuesta
1

Estamos partiendo de un Listbox que tiene su propiedad MultiSelect en True por lo que indica tu primer macro, donde se recorren todos los elementos seleccionados.

Esa macro está bien para cuando necesitas volcar varios elementos seleccionados, y lo hará a partir de fila 12 porque así lo estás indicando en la primer instrucción.

Solo le agregaría la opción de borrar los elementos seleccionados pero eso será según tu necesidad. Antes de la línea Next se colocaría esto 

'quita la selección
ListBox1.Selected(X) = False

Ahora, el doble clic se ejecuta solo sobre 1 elemento seleccionado y la macro sería así:

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
'x Elsamatilde
'busca la primer celda vacía
    fila = Range("C" & Rows.Count).End(xlUp).Row + 1
'elemento seleccionado
    X = ListBox1.ListIndex
'el pase a tus columnas
    Cells(fila, 3).Value = ListBox1.List(X, 0)
    'Cells(fila, 7).Value = ListBox1.List(x, 1)
    Cells(fila, 9).Value = ListBox1.List(X, 2)
    'Cells(fila, 9).Value = ListBox1.List(x, 3)
'quita la selección
    ListBox1.Selected(X) = False
End Sub

Estimada experta sigue el mismo detalle cuando quiero seleccionar otro ítem del listBox1 y que se copie en la siguiente fila es decir la fila 13 solo hace del cambio en la fila 12  es el único lugar donde hay un cambio y gracias por su pronta respuesta a la anterior pregunta

Déjame un correo o escribime al mío que aparece en sitio que dejó al pie para que te envié mi modelo y pruebes que si funciona.

Algo no estas haciendo bien o hay detalles que desconozco de tu formulario.

Sdos!

http://aplicaexcel.galeon.com/index.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas