Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2009, 15:03   #1
tns-ka
Пользователь
 
Регистрация: 08.12.2009
Сообщений: 24
Вопрос Как заполнить несколько ComboBox'ов?

Доброго времени суток!

Проблема такая: на форме есть 10 комбобоксов, все - одинакового содержания.
На данный момент код заполнения комбобоксов выглядит следующим образом:

Private Sub UserForm_Initialize()

combobox1.additem "1"
combobox1.additem "2"

combobox2.additem "1"
combobox2.additem "2"

.....

combobox10.additem "1"
combobox10.additem "2"

End Sub

Со временем каждый из боксов надо будет дополнять (в каждый - одну и ту же строчку). Можно ли как-то сделать так (например, при помощи цикла), чтобы добавить в код одну строку, но заполнить ей все комбобоксы? Получить что-то вроде:

For x=1 to 10
Combobox(x).additem "1"
Combobox(x).additem "2"
Combobox(x).additem "3"
...
Combobox(x).additem "n"
next
tns-ka вне форума Ответить с цитированием
Старый 24.12.2009, 15:47   #2
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от tns-ka Посмотреть сообщение
Доброго времени суток!

Проблема такая: на форме есть 10 комбобоксов, все - одинакового содержания.
На данный момент код заполнения комбобоксов выглядит следующим образом:

Private Sub UserForm_Initialize()

combobox1.additem "1"
combobox1.additem "2"

combobox2.additem "1"
combobox2.additem "2"

.....

combobox10.additem "1"
combobox10.additem "2"

End Sub

Со временем каждый из боксов надо будет дополнять (в каждый - одну и ту же строчку). Можно ли как-то сделать так (например, при помощи цикла), чтобы добавить в код одну строку, но заполнить ей все комбобоксы? Получить что-то вроде:

For x=1 to 10
Combobox(x).additem "1"
Combobox(x).additem "2"
Combobox(x).additem "3"
...
Combobox(x).additem "n"
next
пропробуй так
Код:
dim cm(10) as ComboBox
set cm(1)=userform.combobox1
...
set cm(10)=userform.combobox10
...
For x=1 to 10
	cm(x).additem "1"
	cm(x).additem "2"
	cm(x).additem "3"
	...
	cm(x).additem "n"
next
где userform - место где находятся твои Cоmbobox
Юнлинг вне форума Ответить с цитированием
Старый 24.12.2009, 15:47   #3
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Можно так

Код:
Dim oControl As Control
For Each oControl In UserForm1.Controls
 If TypeOf oControl Is MSForms.ComboBox Then oControl.additem "n"
Next oControl
Этот же код можете применять и при первичном заполнении Боксов
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 24.12.2009, 18:44   #4
tns-ka
Пользователь
 
Регистрация: 08.12.2009
Сообщений: 24
По умолчанию

Спасибо за ответы, решение Юнлинг мне в самый раз. The_Prist, если я правильно понял, в Вашем примере указанный цикл проходит один раз по всем боксам и забивает только одно значение? А как первоначально при помощи этого цикла внести в боксы несколько значений?
tns-ka вне форума Ответить с цитированием
Старый 24.12.2009, 21:08   #5
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от tns-ka Посмотреть сообщение
А как первоначально при помощи этого цикла внести в боксы несколько значений?
Ну где же Ваша смекалка и догадливость? :-)

Код:
Dim oControl As Control, avArr
avArr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
For Each oControl In UserForm1.Controls
 If TypeOf oControl Is MSForms.ComboBox Then oControl.List = avArr
Next oControl
Для добавления элемента в список, просто добавляете его в avArr. Тольк помните, если значения текстовые, то их надо заключать в кавычки
Код:
avArr = Array("привет", "пока")
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru

Последний раз редактировалось The_Prist; 24.12.2009 в 21:13.
The_Prist вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как заполнить StringGrid (Delphi) kaa1977 Помощь студентам 1 13.11.2009 08:40
Как заполнить связный список? levandowskiy Общие вопросы C/C++ 1 18.08.2009 09:00
Как заполнить StringGrid???? Anna_new Помощь студентам 15 19.04.2008 00:34
Как автоматом заполнить поле? Stanislav PHP 4 09.03.2008 01:57
ComboBox как заполнить из БД scrazy БД в Delphi 2 28.05.2007 14:49