Microsoft Access - 组合框下拉列表错误

时间:2015-08-13 22:31:12

标签: vba combobox access-vba ms-access-2010

我是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

另外, 在“更新后”事件中,我有一个“搜索记录”宏

1 个答案:

答案 0 :(得分:0)

由于Me.Combo1397.Dropdown事件中有Change,因此选择值后组合框将再次下拉。您应该将Me.Combo1397.Dropdown移至Enter事件。

如果你还删除了Combo1397.SetFocus(我无法理解为什么需要它),那么你也可以使用Enter / Tab / Arrow键。