我是VBA / Access的新手,所以我一直在使用在线查找的查询/ VBA代码来帮助我构建当前的表单。我的组合框遇到奇怪的行为,我认为这可能是由于我附加的VBA /查询。
下面的代码用于使组合框成为动态搜索工具:当您键入每个字母时,它会重新运行查询以仅使用与键入的字母匹配的姓氏更新列表。
但是,按箭头键/ tab / enter不会执行任何操作。在下拉列表中导航/选择值的唯一方法是单击鼠标。当我单击我想要的值时,表单将填充该记录中的数据(yay!),但下拉菜单保持可见,直到我单击表单的背景。
我希望下拉菜单一旦选择了我想要的记录就会消失,如果可能的话,我希望能够使用箭头键进行导航。
“On Change”事件有以下代码:
Private Sub Combo1397_Change()
Dim strText, strFind
Combo1397.SetFocus
strText = Me.Combo1397.Text
If Len(Trim(strText)) > 0 Then
strFind = "[Last Name] Like '"
For i = 1 To Len(Trim(strText))
If (Right(strFind, 1) = "*") Then
' When adding another character, remove the
' previous "*," otherwise you end up with
' "*g**w*" instead of "*g*w*."
' This has no apparent impact on the user, but
' ensures that the SQL looks as intended.
strFind = Left(strFind, Len(strFind) - 1)
End If
strFind = strFind & "*" & Mid(strText, i, 1) & "*"
Next
strFind = strFind & "'"
strSQL = "SELECT tbl_RC_Main.pk_CandidateID, tbl_RC_Main.[Last Name],tbl_RC_Main.[First Name], tbl_RC_Main.Email FROM tbl_RC_Main Where " & _
strFind & " ORDER BY [Last Name];"
Me.Combo1397.RowSource = strSQL
Else
' Show the entire list.
strSQL = "SELECT tbl_RC_Main.pk_CandidateID, tbl_RC_Main.[Last Name],tbl_RC_Main.[First Name], tbl_RC_Main.Email FROM tbl_RC_Main ORDER BY tbl_RC_Main.[Last Name]; "
Me.Combo1397.RowSource = strSQL
End If
Me.Combo1397.Dropdown
End Sub
另外, 在“更新后”事件中,我有一个“搜索记录”宏
答案 0 :(得分:0)
由于Me.Combo1397.Dropdown
事件中有Change
,因此选择值后组合框将再次下拉。您应该将Me.Combo1397.Dropdown
移至Enter
事件。
如果你还删除了Combo1397.SetFocus
(我无法理解为什么需要它),那么你也可以使用Enter / Tab / Arrow键。