没有调试,你试试:Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Const CB_SHOWDROPDOWN = &H14FPrivate Sub Combo1_Change() showlist Combo1, Combo1.Text 'showlist Combo1,left(Combo1.Text,4) End Sub Sub showlist(ByVal comb As ComboBox, ByVal x As String) comb.Clear Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim sql As String cnn.Open "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=e:\xxxx.mdb" rst.Open "select distinct fieldx frm table1 where fieldx like '" & x & "%'", cnn, adOpenKeyset, adLockOptimistic rst.MoveFirst Do While Not rst.EOF comb.AddItem rst.Fields("fieldx").Value rst.MoveNext Loop Set rst = Nothing Set cnn = Nothing SendMessageLong comb.hwnd, CB_SHOWDROPDOWN, True, 0 End SubPrivate Sub Combo1_Click() SendMessageLong comb.hwnd, CB_SHOWDROPDOWN, False, 0 End Sub
注意:要注意TextBox的SelText
Const CB_SHOWDROPDOWN = &H14FPrivate Sub Combo1_Change()
showlist Combo1, Combo1.Text
'showlist Combo1,left(Combo1.Text,4)
End Sub
Sub showlist(ByVal comb As ComboBox, ByVal x As String)
comb.Clear
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim sql As String
cnn.Open "Provider=MicroSoft.Jet.OLEDB.4.0;Data Source=e:\xxxx.mdb"
rst.Open "select distinct fieldx frm table1 where fieldx like '" & x & "%'", cnn, adOpenKeyset, adLockOptimistic
rst.MoveFirst
Do While Not rst.EOF
comb.AddItem rst.Fields("fieldx").Value
rst.MoveNext
Loop
Set rst = Nothing
Set cnn = Nothing
SendMessageLong comb.hwnd, CB_SHOWDROPDOWN, True, 0
End SubPrivate Sub Combo1_Click()
SendMessageLong comb.hwnd, CB_SHOWDROPDOWN, False, 0
End Sub