Добрый день, подскажите, на форме имеется ComboBox, который заполняется элементами из столбца умной таблицы [vba]
Код
If TypeName(objControlChecked) = "ComboBox" And objControlChecked.Name = "ComboBox_sVk" Then objControlChecked.RowSource = ThisWorkbook.Worksheets("HelpList").ListObjects("vkTbl").ListColumns(3).DataBodyRange.Address(, , , True) End If
[/vba] Подскажите каким образом заполнить ComboBox только оригинальными значениями, исключить повторения?
Добрый день, подскажите, на форме имеется ComboBox, который заполняется элементами из столбца умной таблицы [vba]
Код
If TypeName(objControlChecked) = "ComboBox" And objControlChecked.Name = "ComboBox_sVk" Then objControlChecked.RowSource = ThisWorkbook.Worksheets("HelpList").ListObjects("vkTbl").ListColumns(3).DataBodyRange.Address(, , , True) End If
[/vba] Подскажите каким образом заполнить ComboBox только оригинальными значениями, исключить повторения?Sashagor1982
Формировать список уникальных значений, через словарь, коллекцию , запрос ADO, массив .... и добавлять эти элементы в комбо. ADO может еще и сортировку сделат.
Формировать список уникальных значений, через словарь, коллекцию , запрос ADO, массив .... и добавлять эти элементы в комбо. ADO может еще и сортировку сделат.bmv98rus
Замечательный Временно просто медведь , процентов на 20.
If TypeName(objControlChecked) = "ComboBox" And objControlChecked.Name = "ComboBox_sVk" Then Dim subekt As Range Set subekt = ThisWorkbook.Worksheets("HelpList").ListObjects("vkTbl").ListColumns(3).DataBodyRange
Dim myCollection As New Collection Set myCollection = ConvertCollection(subekt)
Dim strok As Variant For Each strok In myCollection objControlChecked.AddItem CStr(strok) Next End If
[/vba] И соответственно функция, [vba]
Код
Private Function ConvertCollection(oblast As Range) As Collection On Error Resume Next Dim okrugVal As Range Set okrugVal = Null For Each okrugVal In oblast ConvertCollection.Add CStr(okrugVal.Value), CStr(okrugVal.Value) Next End Function
[/vba] Однако возвращается пустая коллекция, подскажите в чем ошибка? Я так понимаю проблема в объявлении okrugVal, но что не так
Попробовал решить таким методом [vba]
Код
If TypeName(objControlChecked) = "ComboBox" And objControlChecked.Name = "ComboBox_sVk" Then Dim subekt As Range Set subekt = ThisWorkbook.Worksheets("HelpList").ListObjects("vkTbl").ListColumns(3).DataBodyRange
Dim myCollection As New Collection Set myCollection = ConvertCollection(subekt)
Dim strok As Variant For Each strok In myCollection objControlChecked.AddItem CStr(strok) Next End If
[/vba] И соответственно функция, [vba]
Код
Private Function ConvertCollection(oblast As Range) As Collection On Error Resume Next Dim okrugVal As Range Set okrugVal = Null For Each okrugVal In oblast ConvertCollection.Add CStr(okrugVal.Value), CStr(okrugVal.Value) Next End Function
[/vba] Однако возвращается пустая коллекция, подскажите в чем ошибка? Я так понимаю проблема в объявлении okrugVal, но что не такSashagor1982
Сообщение отредактировал Sashagor1982 - Четверг, 16.09.2021, 21:28
On Error Resume Next не дает Вам понять в чем ошибка. [vba]
Код
Function ConvertCollection(oblast As Range) As Collection Set ConvertCollection = New Collection On Error Resume Next Dim okrugVal As Range Set okrugVal = Null For Each okrugVal In oblast ConvertCollection.Add CStr(okrugVal.Value), CStr(okrugVal.Value) Next End Function
[/vba]
On Error Resume Next не дает Вам понять в чем ошибка. [vba]
Код
Function ConvertCollection(oblast As Range) As Collection Set ConvertCollection = New Collection On Error Resume Next Dim okrugVal As Range Set okrugVal = Null For Each okrugVal In oblast ConvertCollection.Add CStr(okrugVal.Value), CStr(okrugVal.Value) Next End Function