Как можно удалить запись в коллекции на зная его индекс?
Пример:
Код
Dim cln As Collection
Dim i As Long
Set cln = New Collection
cln.Add Item:="C:\1234\zapros1.xls"
cln.Add Item:="C:\1234\zapros2.xls"
cln.Add Item:="C:\1234\zapros3.xls"
cln.Add Item:="C:\1234\zapros4.xls"
Необходимо удалить значение C:\1234\zapros3.xls.
Сложность в том что в данный момент у этой строки индекс 3, а завтра он может быть 20.
Если искомое значение находится в нескольких элементах коллекции:
Макрос
Sub Макрос1()
Dim cln As Collection
Dim i As Long
Set cln = New Collection
cln.Add Item:="C:\1234\zapros1.xls"
cln.Add Item:="C:\1234\zapros2.xls"
cln.Add Item:="C:\1234\zapros3.xls"
cln.Add Item:="C:\1234\zapros4.xls"
For i = cln.Count To 1 Step -1
If cln(i) = "C:\1234\zapros3.xls" Then
cln.Remove i
End If
Next i
End Sub
Если искомое значение находится только в одном элементе коллекции:
Макрос
Sub Макрос2()
Dim cln As Collection
Dim i As Long
Set cln = New Collection
cln.Add Item:="C:\1234\zapros1.xls"
cln.Add Item:="C:\1234\zapros2.xls"
cln.Add Item:="C:\1234\zapros3.xls"
cln.Add Item:="C:\1234\zapros4.xls"
For i = 1 To cln.Count
If cln(i) = "C:\1234\zapros3.xls" Then
cln.Remove i
Exit For
End If
Next i
End Sub
Если значения в коллекции уникальные (не повторяются), то можно записать значения не только в Items, но и в Keys и затем можно удалить элемент, используя Key, без просмотра всех элементов:
Макрос
Sub Макрос3()
Dim cln As Collection
Set cln = New Collection
cln.Add Item:="C:\1234\zapros1.xls", key:="C:\1234\zapros1.xls"
cln.Add Item:="C:\1234\zapros2.xls", key:="C:\1234\zapros2.xls"
cln.Add Item:="C:\1234\zapros3.xls", key:="C:\1234\zapros3.xls"
cln.Add Item:="C:\1234\zapros4.xls", key:="C:\1234\zapros4.xls"
cln.Remove "C:\1234\zapros3.xls"
End Sub