Option Explicit
Private Sub UserForm_Initialize()
Dim r As Range
Set r = Sheets("Data").Range("D2:F30")
ListBox1.List = r.Value
End Sub
Private Sub TextBox1_change()
Dim strFilter As String
Dim lngIndex As Long
Me.ListBox1.Clear
UserForm_Initialize
strFilter = LCase(Me.TextBox1.Text) & "*"
For lngIndex = ListBox1.ListCount - 1 To 0 Step -1
If Not LCase(ListBox1.List(lngIndex, 0)) Like strFilter Then
ListBox1.RemoveItem (lngIndex)
End If
Next
End Sub
Private Sub cmdResetList_Click()
Me.ListBox1.Clear
UserForm_Initialize
Me.TextBox1 = vbNullString
End Sub
Edit: Textbox1 code changed to reset listbox