在一个窗体上放一个 combo 控件,就可以运行了! Option Explicit Private Const CB_FINDSTRING = &H14C Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As LongPrivate Sub Combo1_Change() On Error Resume Next Dim Search As String, listIndex As Long
Search = Combo1.Text If Len(Search) > 0 Then listIndex = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal Search) Combo1.listIndex = listIndex Else Combo1.listIndex = 0 End If Combo1.SelStart = Len(Search) Combo1.SelLength = Len(Combo1.Text) End SubPrivate Sub Form_Load() Dim i As Integer With Combo1 For i = 0 To 100 .AddItem i & "abc" Next End With End Sub
sc是要搜索的文本,以下代码是增量查询 For i = 0 To Combo1.ListCount - 1 If sc = Left(Combo1.List(i), Len(sc)) Then Combo1.ListIndex = i Exit For End If Next i
Option Explicit
Private Const CB_FINDSTRING = &H14C
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As LongPrivate Sub Combo1_Change()
On Error Resume Next
Dim Search As String, listIndex As Long
Search = Combo1.Text
If Len(Search) > 0 Then
listIndex = SendMessage(Combo1.hwnd, CB_FINDSTRING, -1, ByVal Search)
Combo1.listIndex = listIndex
Else
Combo1.listIndex = 0
End If
Combo1.SelStart = Len(Search)
Combo1.SelLength = Len(Combo1.Text)
End SubPrivate Sub Form_Load()
Dim i As Integer
With Combo1
For i = 0 To 100
.AddItem i & "abc"
Next
End With
End Sub
For i = 0 To Combo1.ListCount - 1
If sc = Left(Combo1.List(i), Len(sc)) Then
Combo1.ListIndex = i
Exit For
End If
Next i