Mikle, удалять можно и из массива, и если этот процесс оптимизировать, то он не будет занимать много времени.
Например, так. Для определения верхней границы массива с исходными значениями используется не UBound(List1), а переменная List1Count (которая изначально равна UBound(List1)). Когда надо удалить элемент I все элементы с I+1 по List1Count перемещаются на одну позицию вниз. Перемещение можно сделать в цикле (даже так будет довольно быстро), но еще лучше использовать API CopyMemory. И после перемещения элементов уменьшить счетчик List1Count=List1Count-1. После того, как список исходных значений не нужен, память можно освободить, Erase List1().
Вот так вот, быстро, дешево и сердито
Sync, а вот теперь я уже не понимаю вопроса
Тебе надо заполнить список из другого списка, только исключить повторения?
В таком случае (если первый список представляет собой строку, разделенную запятыми), можно делать так.
- Код: Выделить всё
'Строковая переменная ValueList содержит числа, в твоей задаче это Text1.Text
Sub AddValue(ByVal Value As Long)
Dim V As String
Const D As String = ","
V = Trim$(Str$(Value))
If InStr(D & V & D, D & ValueList & D) = 0 Then
If Len(ValueList) > 0 Then ValueList = ValueList & D
ValueList = ValueList & V
End If
End Sub
Использование:
- Код: Выделить всё
Dim I As Long, V As Long
For I = 1 To 10
Randomize
V = Fix(Rnd*9)
AddValue V
Next I
MsgBox ValueList
Lasciate ogni speranza, voi ch'entrate.