Comment filtrer zone de liste de valeurs basée sur une zone de texte valeur
J'ai un textbox et un contrôle listbox sur userform. Je veux filtrer les valeurs dans la listbox basé sur la valeur que j'ai entrer dans la zone de texte. Feuille nommée TMP a les valeurs et je filtre sur la base de zone de texte modifier l'événement, mais il se ferme automatiquement lors de l'ajout que les valeurs de zone de liste.
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
OriginalL'auteur Rohan | 2017-03-18
Vous devez vous connecter pour publier un commentaire.
J'espère bien que le morceau de code suivant est ce que vous cherchez.
Noter que ce sous ne pas faire usage de la
AutoFilter
sur la feuilleTMP
. Par conséquent, le sub est un peu plus rapide. Aussi, si vous souhaitez filtrer vos données sur la feuille, cela ne sera pas effacer /modifier vos paramètres de filtre.La ligne à la fin
If Me.ListBox1.ListCount = 1 Then Me.ListBox1.Selected(0) = True
n'est pas vraiment nécessaire, mais plutôt pour votre commodité. Il s'assure que l'élément est automatiquement sélectionné dans laListBox
si il ya seulement 1 élément dans la liste.OriginalL'auteur Ralph