Заполнение combobox с уникальными значениями без скриптинга.

55
8

До сих пор я нашел способ заполнить свой combobox, но он не работает (ошибка 429), когда он пытается создать объект. вот код, который я нашел:

Dim v, e
c = 2
ld = 8
lf = 128
With Sheets("2017-Sem1").Range(Cells(ld, c), Cells(lf, c))
v = .Value
End With
With CreateObject("scripting.dictionnary")
.comparemode = 1
For Each e In v
If Not .exists(e) Then .Add e, Nothing
Next
If .Count Then Me.ComboBox1.List = Application.Transpose(.keys)
End With
End Sub

Прежде всего, я не понимаю, что именно делает код, я буду благодарен, если вы сможете рассказать мне об этом. Во-вторых, кажется, что "scripting.dictionnary" не существует на моем компьютере: я попробовал

dim dict as scripting.Dictionnary 

и он сразу же возвращает ошибку компиляции.

Поэтому, насколько я понимаю, я не смогу использовать его (отсутствует DLL, и я не могу войти в папки на моей работе). Есть ли у кого-нибудь альтернативное решение, которое я могу использовать?

Спасибо, PEagle

спросил(а) 2017-01-03T18:52:00+03:00 3 года, 6 месяцев назад
1
Решение
94

Вы можете сделать это несколько иначе - вам не обязательно нужен Dictionary (или Collection). Просто используйте объект Combobox.List. Этот код VBA принимает значения в диапазоне A1:A10 и только добавляет к вашему combobox, если он уникален. Код предназначен для использования в вашем UserForm Module

Sub Userform_Initialize()
Dim rng As Range, r As Range
Set rng = Sheet1.Range("A1:A10")

For Each r In rng
AddUnique r.value
Next r
End Sub

Sub AddUnique(value As Variant)
Dim i As Integer
Dim inList As Boolean

inList = False
With Me.ComboBox1
For i = 0 To Me.ComboBox1.ListCount - 1
If Me.ComboBox1.List(i) = value Then
inList = True
Exit For
End If
Next i

If Not inList Then
.AddItem value
End If
End With
End Sub

Я тестировал код, и он отлично работает для меня. Дайте мне знать, если у вас возникнут проблемы

ответил(а) 2017-01-03T21:32:00+03:00 3 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема