|
Private Sub Combo1_KeyPress(KeyAscii As Integer)
ComboBoxExtendedMatching Combo1, KeyAscii End Sub Sub ComboBoxExtendedMatching(cbo As ComboBox, KeyAscii As Integer, _ Optional CompareMode As VbCompareMethod = vbTextCompare) Dim index As Long Dim Text As String ' if user pressed a control key, do nothing If KeyAscii <= 32 Then Exit Sub ' produce new text, cancel automatic key processing Text = Left$(cbo.Text, cbo.SelStart) & Chr$(KeyAscii) & Mid$(cbo.Text, _ cbo.SelStart + 1 + cbo.SelLength) KeyAscii = 0 ' search the current item in the list For index = 0 To cbo.ListCount - 1 If InStr(1, cbo.List(index), Text, CompareMode) = 1 Then ' we've found a match cbo.ListIndex = index Exit For End If Next ' if no matching item If index = cbo.ListCount Then cbo.Text = Text End If ' highlight trailing chars in the edit area cbo.SelStart = Len(Text) cbo.SelLength = 9999 End Sub |