Try something like this:-
Private Sub UserFilter_Change()
Dim a, e, c As Integer
Filternames.Clear
Dim Dic As Object
With Sheets("Customers")
If optCompany = True Then
a = .Range("B2", .Range("B" & Rows.Count).End(xlUp)).Value
ElseIf optAddress = True Then
a = .Range("C2", .Range("C" & Rows.Count).End(xlUp)).Value
ElseIf optPostcode = True Then
a = .Range("F2", .Range("F" & Rows.Count).End(xlUp)).Value
End If
End With
Set Dic = CreateObject("Scripting.Dictionary")
Dic.CompareMode = vbTextCompare
For Each e In a
c = c + 1
If UCase(e) = UCase(UserFilter.Value) Then Dic.Item(e) = c
Next
If Dic.exists(UserFilter.Value) Then
With Filternames
.Clear
.ColumnCount = 3
.ColumnWidths = "25,50,50"
.AddItem Sheets("Customers").Cells(Dic.Item(UserFilter.Value), 1)
.List(.ListCount - 1, 1) = Sheets("Customers").Cells(Dic.Item(UserFilter.Value) + 1, 2)
.List(.ListCount - 1, 2) = Sheets("Customers").Cells(Dic.Item(UserFilter.Value) + 1, 3)
End With
End If
End Sub
Regards Mick
Bookmarks