Come filtro listbox valori in base a un valore della casella di testo

Ho una textbox e un controllo listbox form. Voglio filtrare i valori listbox in base al valore devo inserire nella casella di testo. Foglio denominato TMP ha i valori e ho un filtro basato sulla textbox evento di modifica, ma si chiude automaticamente quando si aggiunge che i valori di riepilogo.

Private Sub Textbox1_Change()
'On Error Resume Next
Dim fCell As Range, MyArr As Variant, i As Long

With TMP
    .AutoFilterMode = False
    .Range("A1").AutoFilter
    .Range("A1").AutoFilter Field:=1, Criteria1:=Me.TextBox1.Value
End With

ListBox1.RowSource = ""
i = 0

For Each fCell In TMP.Range("A1:A" & TMP.Range("A" & TMP.Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
    Me.ListBox1.AddItem fCell.Value, i
     i = i + 1
Next fCell


End Sub

OriginaleL’autore Rohan | 2017-03-18

One Reply
  1. 10

    Spero il seguente pezzo di codice è quello che stai cercando.

    Private Sub Textbox1_Change()
    
    Dim i As Long
    Dim arrList As Variant
    
    Me.ListBox1.Clear
    If TMP.Range("A" & TMP.Rows.Count).End(xlUp).Row > 1 And Trim(Me.TextBox1.Value) <> vbNullString Then
        arrList = TMP.Range("A1:A" & TMP.Range("A" & TMP.Rows.Count).End(xlUp).Row).Value2
        For i = LBound(arrList) To UBound(arrList)
            If InStr(1, arrList(i, 1), Trim(Me.TextBox1.Value), vbTextCompare) Then
                Me.ListBox1.AddItem arrList(i, 1)
            End If
        Next i
    End If
    If Me.ListBox1.ListCount = 1 Then Me.ListBox1.Selected(0) = True
    
    End Sub

    Di notare che questo sub non utilizzare il AutoFilter sul foglio TMP. Pertanto, il sub è un po ‘ più veloce. Inoltre, se si desidera filtrare i dati sul foglio, questo sub non eliminare /modificare le tue attuali impostazioni del filtro.

    La linea alla fine If Me.ListBox1.ListCount = 1 Then Me.ListBox1.Selected(0) = True non è davvero necessario, ma piuttosto per la vostra convenienza. Esso garantisce che l’elemento è selezionato automaticamente in ListBox se c’è solo 1 elemento in elenco.

    Come filtro listbox valori in base a un valore della casella di testo

    Wow si sono impressionanti. Grazie mille!

    OriginaleL’autore Ralph

Lascia un commento