在Combox的文本框中输入内容,如果内容是下拉列表中的某一项时,则Msgbox "Yes",如果不是则Msgbox "No",代码如何写,放在Combox的什么事件中?

解决方案 »

  1.   

    Dim sAll As StringPrivate Sub Form_Load()
        Dim i As Long
        sAll = "|"
        For i = 0 To Combo1.ListCount - 1
            sAll = sAll & Combo1.List(i) & "|"
        Next
    End SubPrivate Sub Combo1_KeyPress(KeyAscii As Integer)
        If KeyAscii = 13 Then
            If InStr(1, sAll, "|" & Combo1.Text & "|") Then
                MsgBox "Yes"
            Else
                MsgBox "No"
            End If
        End If
    End Sub以上代码在Combo1中输入完成后按回车键时做出判断。
    要想更快速高效也可用API实现。
      

  2.   


    Option ExplicitPrivate Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)
     Dim i As Integer
        Dim stext As String
        stext = Combo1.Text
        
        For i = 0 To Combo1.ListCount
           If LCase(stext) = LCase(Combo1.List(i)) Then
             MsgBox "ok"
             Exit For
           End If
        
        Next
    End SubPrivate Sub Form_Load()
        Dim i As Integer
        For i = 1 To 100
            Combo1.AddItem i & "ok"
        Next
    End Sub
    输入一下1~100后面跟OK,可以试一下
      

  3.   

    Private Sub Combo1_LostFocus()
    For i = 0 To Combo1.ListCount - 1
    If Combo1.Text = "文本" Then
    MsgBox "Yes"
    Exit Sub
    Else
    MsgBox "No"
    End If
    Exit Sub
    Next
    End SubPrivate Sub Form_Load()Combo1.AddItem "文本"
    Combo1.AddItem "计算机"
    Combo1.AddItem "电视"
    Combo1.AddItem "OK"
    End Sub
      

  4.   

    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 Const CB_FINDSTRINGEXACT As Long = &H158  ' 完全匹配
    Private Const CB_FINDSTRING As Long = &H14C         ' 模糊匹配Private Sub Command1_Click()
       ' 返回找到的条目索引,如果没有找到,则返回-1。其中红色标记的-1是要进行查找的起始位置。例如,从第8项以后开始找,则此处为7
       Debug.Print SendMessage(Combo1.hwnd, CB_FINDSTRINGEXACT, -1, ByVal "要找的字符串")
    End Sub
      

  5.   

    好久好久没来CSDN了,看来这新加的代码标注和文字颜色标注不能混用啊。 ^_^
    Debug.Print SendMessage(Combo1.hwnd, CB_FINDSTRINGEXACT, -1, ByVal "要找的字符串")
      

  6.   

    具体说来就是: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 Const CB_FINDSTRINGEXACT As Long = &H158  ' 完全匹配
    Private Const CB_FINDSTRING As Long = &H14C         ' 模糊匹配Private Sub Combo1_Change()
        If SendMessage(Combo1.hwnd, CB_FINDSTRINGEXACT, -1, ByVal Combo1.Text) >= 0 Then
            MsgBox "OK"
        End If
    End Sub