Загрузка в ComboBox несмежных строк VBA

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
vint
Сообщения: 37
Зарегистрирован: 19 мар 2009, 16:53

Здраствуйте.
Подскажите пожалуста как выйти из такой ситуации.
Есть комбобокс из 6 колонок, в цикле согласно условию я нахожу удовлетворяющие строки и пытаюсь загрузить их в комбу

Код: Выделить всё

Dim diap112 As Variant
Worksheets("ТМЦ").Select
diap112 = Range("A" & iRow113 & ":" & "F" & iRow113).Address(False, False)
cmb11TMC.ColumnCount = 6
cmb11TMC.RowSource = diap112
Так вот цикл находит нужные мне строки и кидает их в комбу, но в конце я обнаруживаю в комбобоксе лишь последнюю строку, т.е. при добавлении следующей затирается предыдущая.
В случае с "AddItem" загружает все но не данные а координаты диапазонов.
Подскажите пожалуста, что не так делаю. первый раз столкнулся с комбой из нескольких столбцов
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Неужели не существует никакого метода?
Третий день на одном месте топчусь.
Единственная мысль, это создавать временный лист сбрасывать на него нужные строки а потом загружать весь этот диапазон в комбо -но это же не серьёзно почему нельза добавлять как в обычном комбобоксе через AddItem.
Аватара пользователя
EducatedFool
Сообщения: 197
Зарегистрирован: 06 апр 2008, 14:03
Откуда: Россия, Урал
Контактная информация:

Попробуйте что-нибудь вроде этого:

Код: Выделить всё

        Me.list_РезультатыПоиска.Clear    ' очистка прежних результатов поиска

        For i = 1 To СписокНомеровНайденныхСтрок.Count    ' перебираем все элементы коллекции номеров найденных строк

            НомерСтроки = СписокНомеровНайденныхСтрок.Item(i)    ' читаем номер очередной строки из коллекции

            Me.list_РезультатыПоиска.AddItem ""    ' добавляем пустую строку в листбокс (чтобы потом записать в неё данные)

            ' в 1-й столбец ListBox-а (невидимый, т.к. его ширина=0) записываем номер строки на листе БД
            Me.list_РезультатыПоиска.Column(0, i - 1) = НомерСтроки

            ' во 2-й столбец ListBox-а записываем номер заявки
            Me.list_РезультатыПоиска.Column(1, i - 1) = "Заявка " & .Cells(НомерСтроки, 1).Value

            ' в 3-й столбец ListBox-а записываем дату заявки
            Me.list_РезультатыПоиска.Column(2, i - 1) = .Cells(НомерСтроки, 2).Value

            ' в 4-й столбец ListBox-а записываем клиента
            Me.list_РезультатыПоиска.Column(3, i - 1) = .Cells(НомерСтроки, 4).Value

            ' в 5-й столбец ListBox-а записываем исполнителя
            Me.list_РезультатыПоиска.Column(4, i - 1) = .Cells(НомерСтроки, 6).Value

            ' в 6-й столбец ListBox-а заносим процент выполнения
            Me.list_РезультатыПоиска.Column(5, i - 1) = .Cells(НомерСтроки, 9).Value

        Next
vint
Сообщения: 37
Зарегистрирован: 19 мар 2009, 16:53

Спасибо EducatedFool !!!
Завтра обязательно поэкперементирую.
Хотя уже вышел из положения как писал выше, только не AddItem а RowSource - но это как то не серьёзно. ;)
Ответить