VBA问题中的组合框Dropbox

时间:2013-11-10 09:10:28

标签: excel vba excel-vba combobox

我在使用combobox.DropDown方法时遇到问题,在更改事件中使用它时,只会显示1个带滚动条的结果,以显示其他结果。

Private Sub emp_name_Change()
    Call Connect_to_db

    strSQL = "SELECT [Name] , [ID] FROM Table2 where [Name] Like '%" & emp_name & "%' Order By [Name]; "

    rs.Open strSQL, cn

    If rs.bof = True Or rs.EOF = True Then
        MsgBox ("No records found")
    Else
        rs.MoveFirst
    End If

    With emp_name
        .Clear
        Do While Not rs.EOF
            .AddItem rs.Fields(0).Value
            rs.MoveNext
        Loop
    End With

    Call Close_db

    emp_name.DropDown
End Sub

2 个答案:

答案 0 :(得分:1)

Private Sub emp_name_Change()更改为Private Sub emp_name_Click(),并将With emp_name移到Else部分

试试这个( UNTESTED

Private Sub emp_name_Click()
    Call Connect_to_db

    strSQL = "SELECT [Name] , [ID] FROM Table2 where [Name] Like '%" & emp_name & "%' Order By [Name]; "

    rs.Open strSQL, cn

    If rs.bof = True Or rs.EOF = True Then
        MsgBox ("No records found")
    Else
        rs.MoveFirst

        With emp_name
            .Clear
            Do While Not rs.EOF
                .AddItem rs.Fields(0).Value
                rs.MoveNext
            Loop
        End With
    End If

    Call Close_db

    emp_name.DropDown
End Sub

答案 1 :(得分:0)

是的我需要通过更改事件来实现此目的。 我试图创建一个组合字母的组合框,列表只显示那些以那些字母开头的条目。

我可以在打开文件时检索整个数据并使用高级过滤器。这是最好的方法吗?