ListView довольно сильно отличается от ListBox.Каждая строка в ListView является ListItem.Если ListView имеет несколько столбцов, то каждый ListItem будет содержать ListSubItems.Это относится к Microsoft Windows Common Controls 6.0 Listview, 5.0 работает немного по-другому.ListViews не возвращают 2D-массив, как ListBox имеет свойство ListIndex.
Рекомендуемое чтение: Примеры элементов управления Excel VBA ListView
Использование ListItem.Find()
для поискасоответствие ListItem
With MainForm.lstMailGen
Dim item As ListItem
Set item = .FindItem(sz:=txtSearch.value, fPartial:=lvwPartial)
If Not item Is Nothing Then
item.Selected = True
End If
End With
Для того, чтобы ListItem был выделен, убедитесь, что HideSelection = False
MainForm.lstMailGen.HideSelection = False
Первый индекс Listitems1 не 0.
For i = 1 To .ListItems.Count
If LCase(Left(.ListItems(i), Len(strText))) = strText Then
Exit For
Next i
Если последний элемент содержит строку, чем If i = .ListItems.count Then
, то выбор будет пропущен.If i > .ListItems.count Then
это правильный способ сделать это.Если цикл For
завершится, то i
будет увеличен на дополнительное время.В приведенном выше случае i
будет = .ListItems.Count + 1`, если цикл завершен.