Private Const CB_FINDSTRING As Long = &H14C
Private Const CB_FINDSTRINGEXACT As Long = &H158
Private Const LB_FINDSTRING As Long = &H18F
Private Const LB_FINDSTRINGEXACT As Long = &H1A2
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Function GetListIndex(ByRef voObj As Object, ByRef vsValue As String, Optional ByVal vbBeginsWith As Boolean = False, Optional vnStart As Long = -1) As Long
Dim eMsg As Long
If Not voObj Is Nothing Then
If (TypeOf voObj Is ComboBox) Then
If vbBeginsWith Then
eMsg = CB_FINDSTRING
Else
eMsg = CB_FINDSTRINGEXACT
End If
ElseIf (TypeOf voObj Is ListBox) Then
If vbBeginsWith Then
eMsg = LB_FINDSTRING
Else
eMsg = LB_FINDSTRINGEXACT
End If
Else
Err.Raise 5
Exit Function
End If
GetListIndex = SendMessage(voObj.hwnd, eMsg, vnStart, ByVal vsValue)
End If
End Function