Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Const CB_SHOWDROPDOWN = &H14F
#If Win32 Then
    Public Const CB_FINDSTRING = &H14C
    Public Const CB_FINDSTRINGEXACT = &H158
    Public Const LB_FINDSTRING = &H18F
    Public Const LB_FINDSTRINGEXACT = &H1A2
#Else
    Public Const WM_USER = &H400
    Public Const CB_FINDSTRING = WM_USER + 12
    Public Const CB_FINDSTRINGEXACT = WM_USER + 24
    Public Const LB_FINDSTRING = WM_USER + 16
    Public Const LB_FINDSTRINGEXACT = WM_USER + 35
#End IfPublic Function FindFirstMatch(ByVal ctlSearch As Control, ByVal SearchString As String, ByVal FirstRow As Integer, ByVal Exact As Boolean) As Integer#If Win32 Then
    Dim Index As Long
#Else
    Dim Index As Integer
#End IfOn Error Resume Next
If TypeOf ctlSearch Is ComboBox Then
    If Exact Then
        Index = SendMessage(ctlSearch.hwnd, CB_FINDSTRINGEXACT, FirstRow, ByVal SearchString)
    Else
        Index = SendMessage(ctlSearch.hwnd, CB_FINDSTRING, FirstRow, ByVal SearchString)
    End If
ElseIf TypeOf ctlSearch Is ListBox Then
    If Exact Then
        Index = SendMessage(ctlSearch.hwnd, LB_FINDSTRINGEXACT, FirstRow, ByVal SearchString)
    Else
        Index = SendMessage(ctlSearch.hwnd, LB_FINDSTRING, FirstRow, ByVal SearchString)
    End If
End IfFindFirstMatch = IndexEnd Function这上面是一个vb中的baslist模块  但不知道撒意思!就大侠每句解释哈!
还有这个Private Sub Text1_Change()
Dim intRowIndex As Integer
    intRowIndex = FindFirstMatch(List1, Text1.Text, 1, False)
If intRowIndex > -1 Then
    List1.TopIndex = intRowIndex
End IfEnd Sub
是撒意思嘛!!