Problemas con el Multiselect en un listbox. Excel VBA

Tengo formulario que muestra en un listbox los datos que no tienen fecha de recepción.

Mediante un botón al hacer click va a la línea de dato seleccionado y agrega la fecha.

El problema es que no se porque al seleccionar varios datos en el listbox y al hacer click al botón no se cargan también las fechas en esas líneas. Solo se carga la fecha en el ultimo dato seleccionado en el listbox.

Private Sub confirmar_Click()
Dim conta As Integer, fila As Integer, x As Integer
On Error Resume Next
conta = 0
For x = 0 To Me.list_confirmacio.ListCount - 1
    If Me.list_confirmacio.Selected(x) = True Then
    conta = conta + 1
    End If
Next x
If conta = 0 Then
MsgBox ("S'ha de seleccionar un camp com a minim")
Exit Sub
End If
If conta <> 0 Then
For x = 0 To Me.list_confirmacio.ListCount - 1
fila = list_confirmacio.List(list_confirmacio.ListIndex, 8)
    If Me.list_confirmacio.Selected(x) = True Then
    Sheets("Dades").Cells(fila, "N").Select
    ActiveCell.Offset(0, 0) = Confirmacio.data.Value
    Me.list_confirmacio.Selected(x) = False
    End If
Next x
End If

Que estoy haciendo mal?

Respuesta
3

Esta línea debería tomar la fila del dato seleccionado:

fila = list_confirmacio.List(list_confirmacio.ListIndex, 8)

Debería ser:

fila = list_confirmacio.List(x, 8)

Le hice unos ajustes a tu código. No es necesario seleccionar la celda, puedes actualizar el dato directamente en la celda, revisa lo siguiente:

Private Sub confirmar_Click()
  Dim conta As Integer, fila As Long, i As Long
  With list_confirmacio
    For i = 0 To .ListCount - 1
      If .Selected(i) = True Then conta = 1
    Next i
    If conta = 0 Then
      MsgBox ("S'ha de seleccionar un camp com a minim")
      Exit Sub
    End If
    '
    For i = 0 To .ListCount - 1
      If .Selected(i) = True Then
        fila = .List(i, 8)
        Sheets("Dades").Cells(fila, "N") = Data.Value
        .Selected(i) = False
      End If
    Next
  End With
End Sub

Nota: Cambié la variable ( x ) por la variable ( i ), estoy más acostumbrado a utilizar la ( i ) para las filas y la ( x )  para ecuaciones matemáticas.

Muchas gracias, tomo nota de todas tus recomendaciones. El código con las modificaciones que le has funciona perfectamente como yo quería.


Muchas gracias por tu ayuda de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas