Seleccionar celda de listbox según criterio

Tengo una serie de datos que parten desde la celda A3 hasta la celda AA700

Con un listbox y un filtro hago que se busquen y se reflejen en el listbox así

Private Sub TXT_BUSCAR_Change()
Sheets(ComboBox1.Value).Activate
If Me.TXT_BUSCAR.Value = Empty Then
MsgBox "Escriba un dato para buscar"
Me.ListBox1.Clear
Me.TXT_BUSCAR.SetFocus
Exit Sub
End If

Me.ListBox1.Clear

items = Range("a3:Aa700").CurrentRegion.Rows.Count
For i = 3 To items
' EL LCASE OBLIGA A QUE EXCEL PONGA TODOS LOS DATOS QUE LEE EN MINUSCULA
' PARA COMPARARLOS ADECUADAMENTE
If LCase(Cells(i, 1).Value) Like "*" & LCase(Me.TXT_BUSCAR.Value) & "*" Then
Me.ListBox1.AddItem Cells(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = FormatCurrency(Cells(i, 7), 0)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = Cells(i, 9)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = FormatCurrency(Cells(i, 8), 0)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = Cells(i, 10)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = Cells(i, 27)

end sub

Pero necesito que al dar click sobre algun elemento del listado me busque la fila completa donde se encuentran reflejados esos datos, como en la primera es fecha y las entradas pueden tener fechas similares desde AA3 hasta AA700 se van colocando series de numeros consecutivos 15001, 15002, 15003... Etc

Querría que me buscara en función del resultado de la celda AA y luego cargue esa dirección para que pueda llamar el listado a un userform de todos los datos.

Respuesta
1

Te anexo la macro para cuando le das click al listbox

Private Sub ListBox1_Click()
'Por.Dante Amor
    consec = ListBox1.List(ListBox1.ListIndex, 7)
    Set b = Columns("AA").Find(consec, lookat:=xlWhole)
    If Not b Is Nothing Then
        Cells(b.Row, "A").Select
    End If
End Sub

Nota: te recomiendo que cambies esto:

items = Range("a3:Aa700").CurrentRegion.Rows.Count

Por esto:

items = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

Ya que no te está poniendo la última fila.

Saludos. Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas