ExtendCombo




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

Enable extended matching to any type combobox control

Extended matching means that as soon as you type in the edit area
of the ComboBox control, the routine searches for a partial match
in the list area and highlights the characters left to be typed.

To enable this capability you have only to call this routine
from within the KeyPress routine of the ComboBox, as follows:











( extendcombo.html )- by Paolo Puglisi - Modifica del 17/12/2023