Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Заполнение ComboBox оригинальными значениями - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение ComboBox оригинальными значениями (Макросы/Sub)
Заполнение ComboBox оригинальными значениями
Sashagor1982 Дата: Среда, 15.09.2021, 19:07 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Добрый день, подскажите, на форме имеется 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
Дата добавления - 15.09.2021 в 19:07
bmv98rus Дата: Четверг, 16.09.2021, 08:20 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4107
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Формировать список уникальных значений, через словарь, коллекцию , запрос ADO, массив .... и добавлять эти элементы в комбо. ADO может еще и сортировку сделат.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеФормировать список уникальных значений, через словарь, коллекцию , запрос ADO, массив .... и добавлять эти элементы в комбо. ADO может еще и сортировку сделат.

Автор - bmv98rus
Дата добавления - 16.09.2021 в 08:20
Sashagor1982 Дата: Четверг, 16.09.2021, 15:32 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Что за ADO?


Сообщение отредактировал Sashagor1982 - Четверг, 16.09.2021, 15:33
 
Ответить
СообщениеЧто за ADO?

Автор - Sashagor1982
Дата добавления - 16.09.2021 в 15:32
RAN Дата: Четверг, 16.09.2021, 17:54 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Вопрос не по теме.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВопрос не по теме.

Автор - RAN
Дата добавления - 16.09.2021 в 17:54
Sashagor1982 Дата: Четверг, 16.09.2021, 21:23 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 287
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Попробовал решить таким методом
[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 - Четверг, 16.09.2021, 21:28
 
Ответить
СообщениеПопробовал решить таким методом
[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
Дата добавления - 16.09.2021 в 21:23
doober Дата: Пятница, 17.09.2021, 00:41 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
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]




Сообщение отредактировал doober - Пятница, 17.09.2021, 00:41
 
Ответить
Сообщение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]

Автор - doober
Дата добавления - 17.09.2021 в 00:41
jun Дата: Пятница, 17.09.2021, 08:52 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

Sashagor1982, посмотрите файл. В нем решение при помощи ADO и массива с сортировкой значений
К сообщению приложен файл: 2346905.xlsb (17.9 Kb)
 
Ответить
СообщениеSashagor1982, посмотрите файл. В нем решение при помощи ADO и массива с сортировкой значений

Автор - jun
Дата добавления - 17.09.2021 в 08:52
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение ComboBox оригинальными значениями (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!