我使用以下代码将数据插入另一个工作表的下拉列表中。当用户从另一个下拉列表中选择某个选项时,就可以实现这一点。
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.E.说我在下拉列表中有以下内容: 托马斯 史密斯 格雷厄姆 埃文斯 大卫 B matthews
用户输入" th" 其余值应为
托马斯 史密斯 B matthews即使是简化版本,用户也必须以A Th的形式输入名称。如果以上内容不可行,则返回A Thomas就可以了。
我看过这个http://www.ozgrid.com/Excel/autocomplete-validation.htm和Excel data validation with suggestions/autocomplete
但我不认为我不确定如何将其与上述代码集成,或者甚至可能!
有人可以帮帮我吗?
TIA:)
答案 0 :(得分:2)
这是我的SAYT(按键搜索)功能。我的表单有一个列表框控件,其中包含一个用户列表和一个可用于搜索列表的文本框控件。
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
在您键入时,txtSearch_Change事件会在每次击键时触发,并循环显示列表框值,直到找到第一个匹配项并选择它。我们还检查KeyPress事件以查看用户是否按Enter(ASCII 13)以自动完成搜索。我是不区分大小写的(我可以解决所有问题),但您可以轻松地将其修改为区分大小写(甚至可以添加一个复选框,以便用户可以选择区分大小写!)