Это должно работать нормально:
Dim index As Long
With lstComm
Dim match As Boolean
For index = 0 To .ListCount - 1
If .Column(1, index) = txtSearch.Value Then
match = True
Exit For
End If
Next
If Not match Then Exit Sub
Dim isSelected As Boolean
isSelected = .Selected(index)
.Selected(index) = True
.Selected(index) = isSelected
End With
Возвращает искомый элемент списка.
Если элемент не был найден, он существует.
В противном случае он сохраняеттекущее состояние выбора этого элемента, выбирает его для размещения списка и восстанавливает сохраненное состояние элемента.