I am using the below code to insert data into a drop down list from another sheet. This is achieved when the user selects a certain choice from another drop down list.
lstRow = Sheets("Data Sheet").Range("D" & Rows.Count).End(xlUp).Row Sheets("Data Insert").Range("C3").Select With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="='Associated British Ports'!$G$7:$G" & lstRow .IgnoreBlank = False .InCellDropdown = True .InputTitle = "" .ErrorTitle = "Invalid Selection" .InputMessage = "" .ErrorMessage = _ "Please select a user from the list or select New User as the configuration type." .ShowInput = True .ShowError = True End With
I want to add in the function that when the user types in a few letters it searches through the list and eliminates anything that doesn’t contain that.
I.E. say I have the below in the dropdown:
And the user types in “th”
The remaining values should be
Even a simplified version where the user must type in the name in the form of A Th…. To return A Thomas would be okay if the above is not doable.
I have seen this http://www.ozgrid.com/Excel/autocomplete-validation.htm and this Excel data validation with suggestions/autocomplete
but i dont think I’m not sure how to integrate this with the above code, or it is even possible!
Could anyone help me out please?
Here is my SAYT (Search As You Type) function. My form has a listbox control with a list of users and a textbox control that you can use to search the list.
Private Sub txtSearch_Change() Dim x As Integer lstUsers.ListIndex = -1 For x = 0 To lstUsers.ListCount - 1 lstUsers.ListIndex = x If InStr(1, LCase(lstUsers.Text), LCase(txtSearch.Text), vbTextCompare) > 0 _ Or InStr(1, LCase(lstUsers.List(x, 1)), LCase(txtSearch.Text), vbTextCompare) > 0 _ Then Exit Sub End If Next x End Sub Private Sub txtSearch_KeyPress(ByVal KeyAscii As msforms.ReturnInteger) If KeyAscii = 13 Then txtSearch.Text = lstUsers.Text End If End Sub
As you type, the txtSearch_Change event fires with every keystroke, and it loops through the listbox values until it finds the first match and selects it. We also check the KeyPress event to see if the user pressed Enter (ASCII 13) to autocomplete the search. Mine is case insensitive (I LCase everything), but you could easily modify it to be case sensitive (or even add a checkbox so the user can select case sensitivity!)