Тема: Удаление одинаковых элементов из списка ComboBox

Добрый день коллеги! Наткнулся на такую задачку:
Существует список ComboBox, к примеру :
"Москва"
"Москва"
"Саратов"
"Вашингтон"
"Вашингтон"
Я его отсортировал: ComboBox.Sorted = true
"Вашингтон"
"Вашингтон"
"Москва"
"Москва"
"Саратов"
Как из полученного списка можно удалить дублирующиеся?

Re: Удаление одинаковых элементов из списка ComboBox

Организовать цикл по удалению дубликатов.

Re: Удаление одинаковых элементов из списка ComboBox

Ага вот я на этом и споткнулся,
удаляем элемент - длинна списка
меняется, цикл выходит за предел

Re: Удаление одинаковых элементов из списка ComboBox

> Василий
Можно начать удаление с конца списка.
Можно проверять кол. элементов после каждого удаления...

Re: Удаление одинаковых элементов из списка ComboBox

> Василий
Попробуй

Private Sub UserForm_Initialize()
Dim i As Long
    ComboBox1.AddItem "1"
    ComboBox1.AddItem "5"
    ComboBox1.AddItem "2"
    ComboBox1.AddItem "1"
    ComboBox1.AddItem "5"
    ComboBox1.AddItem "5"
    ComboBox1.AddItem "3"
    ComboBox1.AddItem "2"
    ComboBox1.AddItem "4"
    ComboBox1.AddItem "4"
    ComboBox1.AddItem "4"
    ComboBox1.AddItem "5"
    ComboBox1.AddItem "2"
    'ComboBox1.Style = fmStyleDropDownCombo
    ComboBox1.BoundColumn = 0
    ComboBox1.ListIndex = 0
        i = 0
    Do While i < ComboBox1.ListCount
      ComboBox1.Text = ComboBox1.List(i)
      If ComboBox1.ListIndex <> i Then
        ComboBox1.RemoveItem i
      Else
        i = i + 1
      End If
    Loop
    ComboBox1.ListIndex = -1
End Sub

~'J'~

Re: Удаление одинаковых элементов из списка ComboBox

> Fatty
Я вначале тоже подумал о вложенном цикле, но с циклами всегда опасаешься, что собьешься в счетчике...
Я бы составил новый список из неповторяющихся элементов и заменил им старый.

Re: Удаление одинаковых элементов из списка ComboBox

> LeonidSN
Я тоже так подумал, а тут готовое решение,
не помню у кого стырил :)
Времени нет возиться...
~'J'~

Re: Удаление одинаковых элементов из списка ComboBox

А как вам такой способ создания списка неповторяющихся элементов?

    Dim TextColl As New Collection
    Dim i As Integer
    On Error Resume Next
    For i = 0 To UserForm1.ComboBox1.ListCount
        TextColl.Add UserForm1.ComboBox1.List(i), UserForm1.ComboBox1.List(i)
    Next i

Re: Удаление одинаковых элементов из списка ComboBox

Спасибо всем за участие, ниже привожу свой код, однако пришлось делать несколько циклов, первый
повторяет основные 2-ва несколько раз. Без этого действа в списке всё равно остаються дубликаты!

Private Sub CommandButton1_Click()
Dim j As Integer
Dim k As Integer
Dim str As String
Dim str1 As String
For t = 1 To 5
For k = 0 To Combo1.ListCount
    For j = k + 1 To Combo1.ListCount
         If j > (Combo1.ListCount - 1) Then Exit For
         str1 = Combo1.List(k) & " = " & Combo1.List(j)
          ' MsgBox str1
         If Combo1.List(k) = Combo1.List(j) Then
           str = "&#221;&#235;&#229;&#236;&#229;&#237;&#242; &#243;&#228;&#224;&#235;&#184;&#237;" & Combo1.List(j)
            '          MsgBox str
           Combo1.RemoveItem j
          End If
          Next j
 ' MsgBox Combo1.ListCount
 'Combo1.RemoveItem 0
 Next k
 Next t
End Sub
Private Sub UserForm_Activate()
Combo1.AddItem "1"
Combo1.AddItem "1"
Combo1.AddItem "2"
Combo1.AddItem "2"
Combo1.AddItem "3"
Combo1.AddItem "3"
Combo1.AddItem "5"
End Sub

Re: Удаление одинаковых элементов из списка ComboBox

Private Sub UserForm_Activate()
Dim i As Integer
Dim j As Integer
Dim K As Integer
' заполнение списка всеми данными
i = 1
While Worksheets(1).Cells(i, 1) <> ""
    UserForm1.ComboBox1.AddItem (Worksheets(1).Cells(i, 1))
i = i + 1
Wend
' фильтр уникальных записей
j = 0
For j = 0 To UserForm1.ComboBox1.ListCount - 1
    For K = j + 1 To UserForm1.ComboBox1.ListCount - 1
        If UserForm1.ComboBox1.List(j) = UserForm1.ComboBox1.List(K) Then
        UserForm1.ComboBox1.RemoveItem (K)
        K = K - 1
        End If
        If K = UserForm1.ComboBox1.ListCount - 1 Then Exit For
    Next
Next
End Sub