I Have been spending much time trying to figure out how to search lisviews with more than one column. After awhile i just went to vbforums and got some code for it but the code doesn't seem to find "My Search Text" anywhere other than the first column can anyone explain this for me please.

Public Enum elvSearch
elvSearchText = 1
elvSearchSub = 2
elvSearchTag = 4
End Enum
Function ListViewFindItem(sFindItem As String, lsvData As ListView, Optional eValueType As elvSearch = elvSearchText + elvSearchSub + elvSearchTag, Optional lSearchFor As Long = lvwPartial, Optional lIndexBeginFrom As Long = 1) As ListItem
On Error Resume Next

'Try to find item
If eValueType And elvSearchText Then
'Search text
Set ListViewFindItem = lsvData.FindItem(sFindItem, lvwText, lIndexBeginFrom, lSearchFor)
End If
If eValueType And elvSearchSub And (ListViewFindItem Is Nothing) Then
'Search subitems
Set ListViewFindItem = lsvData.FindItem(sFindItem, lvwText, lIndexBeginFrom, lSearchFor)
End If
If eValueType And elvSearchTag And (ListViewFindItem Is Nothing) Then
'Search tags
Set ListViewFindItem = lsvData.FindItem(sFindItem, lvwText, lIndexBeginFrom, lSearchFor)
End If

If (ListViewFindItem Is Nothing) = False Then
'Found a matching item, display it.
Set lsvData.SelectedItem = ListViewFindItem
lsvData.SelectedItem.EnsureVisible
End If
On Error GoTo 0
End Function

'Demonstration routine
Sub Test()
Dim oListItem As ListItem

'Search for "My Search Text"
Set oListItem = ListViewFindItem("My Search Text", lsvData, elvSearchSub)
If (oListItem Is Nothing) = False Then
'Found text in listview, now select item
Set lsvData.SelectedItem = oListItem
End If
End Sub