Combox中有:
“a1”“a2”“a3”“a4”“a5”“a6”
“b1”“b2”“b3”“b4”“b5”“b6”
“c1”“c2”“c3”“c4”“c5”“c6”
“d1”“d2”“d3”“d4”“d5”“d6”
当用户输入:b,下拉框自动展开,当前选择为“b1”

解决方案 »

  1.   

    看看这个也许对你有帮助。Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    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
    Private Const CB_SHOWDROPDOWN = &H14F
    Private Const WM_SETREDRAW As Long = &HB&
    Private Const CB_FINDSTRING As Long = &H14C& 'iKeyCode目的:传递KeyDown事件中的KeyCode
    Private iKeyCode As Integer Public Sub SearchCombo(InControl As Object)
        On Error GoTo errTrap
         
        Dim StrPos As Long
        Dim lPos As Long
        Dim SearchStr As String
         
        If TypeOf InControl Is ComboBox Then
            StrPos = InControl.SelStart
            SearchStr = Left$(InControl.Text, StrPos)
            
            lPos = SendMessage(InControl.hwnd, CB_FINDSTRING, 0, ByVal SearchStr)
            
            If lPos >= 0 Then
                InControl.Text = InControl.List(lPos)
                InControl.ListIndex = lPos
            End If
            
            With InControl
                .SelStart = StrPos
                .SelLength = Len(InControl.Text)
            End With
        End If
        Exit Sub
    errTrap:
         MsgBox Err.Description
    End Sub
      Private Sub Combo1_Change()
        If iKeyCode <> vbKeyBack And iKeyCode <> vbKeyReturn Then
            SearchCombo Combo1
            SendMessageLong Combo1.hwnd, CB_SHOWDROPDOWN, True, 0
        End If
    End Sub Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
        iKeyCode = KeyCode
    End Sub Private Sub Form_Load()
        Combo1.AddItem "asqwed"
        Combo1.AddItem "fgtthgh"
        Combo1.AddItem "nfgftrtyr"
        Combo1.AddItem "werwerwe"
        Combo1.AddItem "ytrtyrtyrty"
        Combo1.AddItem "bfrthrtyrt"
        Combo1.AddItem "rewerwe"
        Combo1.AddItem "vsfsdf"
    End Sub 来源:http://lxcc.cnblogs.com/archive/2004/11/17/64717.html
      

  2.   

    http://community.csdn.net/Expert/topic/4582/4582329.xml?temp=.8332331
      

  3.   

    Option Explicit
    Dim strCombo As String
    Const WM_SETREDRAW = &HB
    Const KEY_A = 65
    Const KEY_Z = 90
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Sub combo1_KeyUp(KeyCode As Integer, Shift As Integer)
    Dim x%
    Dim strTemp$
    Dim nRet&    If KeyCode >= KEY_A And KeyCode <= KEY_Z Then
            'only look at letters A-Z
            strTemp = Combo1.Text
            If Len(strTemp) = 1 Then strCombo = strTemp
            nRet& = SendMessage(Combo1.hwnd, WM_SETREDRAW, False, 0&)
            For x = 0 To (Combo1.ListCount - 1)
                If UCase((strTemp & Mid$(Combo1.List(x), Len(strTemp) + 1))) = UCase(Combo1.List(x)) Then
                    Combo1.ListIndex = x
                    Combo1.Text = Combo1.List(x)
                    Combo1.SelStart = Len(strTemp)
                    Combo1.SelLength = Len(Combo1.Text) - (Len(strTemp))
                    strCombo = strCombo & Mid$(strTemp, Len(strCombo) + 1)
                    Exit For
                Else
                    If InStr(UCase(strTemp), UCase(strCombo)) Then
                        strCombo = strCombo & Mid$(strTemp, Len(strCombo) + 1)
                        Combo1.Text = strCombo
                        Combo1.SelStart = Len(Combo1.Text)
                    Else
                        strCombo = strTemp
                    End If
                End If
            Next
            nRet& = SendMessage(Combo1.hwnd, WM_SETREDRAW, True, 0&)
        End If
    End SubPrivate Sub Form_Load()
        Combo1.AddItem "AAAAAAAA"
        Combo1.AddItem "ABBBBBBB"
        Combo1.AddItem "ABCCCCCC"
        Combo1.AddItem "ABCDDDDD"
        Combo1.AddItem "ABCDEEEE"
        Combo1.AddItem "ABCDEFFF"
        Combo1.AddItem "ABCDEFGG"
        Combo1.AddItem "ABCDEFGH"
    End Sub自己在WORD中改装一下。