3 / 2 / 1
Регистрация: 05.02.2019
Сообщений: 27
|
||||||
1 | ||||||
Excel Заполнить несколько ListBox05.02.2019, 14:34. Показов 2913. Ответов 12
Всем добрый день!
При создании UserForm возникла острая необходимость сделать множество ListBox (на данный момент их 15). Заполнить методом additem сложности не возникает, если данный метод применять к каждому ListBox. Все ListBox имеют одинаковый набор данных. Т.е. наполнение идентично. Собственно, вопрос заключается в том, как бы цыклом заполнить их все? Отдельно наполнять каждый - не вариант. Код получится слишком массивным. Пробовал следующий вариант:
0
|
05.02.2019, 14:34 | |
Ответы с готовыми решениями:
12
Как заполнить ListBox Организовать вывод на форму поля со списком (ListBox) и заполнить несколько его строк. Организовать вывод на форму поля со списком (ListBox) и заполнить несколько его строк. Организовать по выбору (отметке) некоторых действий, например д Csv заполнить listbox |
655 / 247 / 89
Регистрация: 28.10.2015
Сообщений: 526
|
||||||
05.02.2019, 14:47 | 2 | |||||
Этот цикл можете вложить в другой цикл или напротив - в этот цикл вставляете другой цикл( вместо L.AddItem "0" ставляете ваш цикл, который должен наполнить листбокс.) Добавлено через 3 минуты По такому же принципу можно циклом обойти например все текстбоксы. В одной моей программке по таймеру на полсекунды подсвечиваются все текстбоксы, меняя фон на розовый и обратно, если в этом текстовом поле только что изменилось значение.
1
|
3 / 2 / 1
Регистрация: 05.02.2019
Сообщений: 27
|
|
05.02.2019, 14:47 [ТС] | 3 |
Огромное спасибо!
Завелось! Могли бы подсказать в чем была ошибка, очень не хотелось бы допускать ее впредь.
0
|
655 / 247 / 89
Регистрация: 28.10.2015
Сообщений: 526
|
|||||||||||
05.02.2019, 15:00 | 4 | ||||||||||
Объявляя Dim lb As ListBox For Each lb In UserForm вы говорите бейсику, что надо пройтись по всем listbox'ам в форме, но для работы такого цикла необходимо, чтобы существовала коллекция листбоксов, либо массив листбоксов! А у вас такой коллекции нет, так как изначально на форме есть просто коллекция контролов, а самостоятельно коллекцию листбоксов вы не создавали. Впредь можно делать так: создаёте коллекцию, наполняете её необходимыми вам листбоксами, в дальнейшем можно организовывать цикл по этой коллекции через For Each. Добавлено через 3 минуты
Вот пример кода, здесь создаётся коллекция, добавляются в неё два листбокса, а потом организовывается цикл, успешно "добирающийся" до каждого контрола коллекции.
0
|
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
||||||
05.02.2019, 15:00 | 5 | |||||
saray, Если имена созданных ListBox не менялись, то заполнить их можно ещё и таким способом :
0
|
655 / 247 / 89
Регистрация: 28.10.2015
Сообщений: 526
|
|
05.02.2019, 15:02 | 6 |
Наполнять коллекцию можно также циклом, что всё упрощает (например, можно сделать цикл, который добавит в коллекцию только те листбоксы, имена которых соответствуют какому-то критерию).
А ещё для 15 листбоксов можно организовать одинаковое поведение, но это уже другая широкая тема классов...
0
|
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
||||||
05.02.2019, 15:03 | 7 | |||||
А если использование метода .AddItem необходимо, то :
2
|
655 / 247 / 89
Регистрация: 28.10.2015
Сообщений: 526
|
|
05.02.2019, 15:08 | 8 |
pashulka, Так будет сильно быстрее, если речь идёт о тысячах строк!
0
|
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
05.02.2019, 15:22 | 9 |
Святой НякаЛайк, Вы о чём ? Наши сообщения появились одновременно, видел только сообщение#2 и никакого проигрыша по отношению к этому варианту у меня нет.
0
|
3 / 2 / 1
Регистрация: 05.02.2019
Сообщений: 27
|
|
05.02.2019, 15:31 [ТС] | 10 |
Вот спасибо!
Вариант от господина pashulka реально быстрее! Огромное спасибо!!!
0
|
655 / 247 / 89
Регистрация: 28.10.2015
Сообщений: 526
|
|
05.02.2019, 16:11 | 12 |
Так я именно о выигрыше в вашем варианте! Так как затестив ваш код, обнаружил, что он быстрее наполняет листбокс, чем вариант с наполнением в цикле.
0
|
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
|
|
05.02.2019, 16:21 | 13 |
Святой НякаЛайк, Чё то я сомневаюсь, что тысячу строк кто-то будет заполнять с помощью метода additem да и компьютеры сейчас помощнее, чем раньше. Но если мой вариант пригодится, то хорошо, но пусть у людей будет выбор.
0
|
05.02.2019, 16:21 | |
05.02.2019, 16:21 | |
Помогаю со студенческими работами здесь
13
ListBox заполнить картинками Как заполнить ListBox Заполнить ListBox данными из FDQuery Не могу заполнить ListBox из StringList Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |