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实现。
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,可以试一下
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
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
具体说来就是: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
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实现。
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,可以试一下
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
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
Debug.Print SendMessage(Combo1.hwnd, CB_FINDSTRINGEXACT, -1, ByVal "要找的字符串")
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