Програмный перебор Combobox-ов

Программирование на Visual Basic for Applications
Dmi3i4
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 06.07.2006 (Чт) 9:59

Програмный перебор Combobox-ов

Сообщение Dmi3i4 » 26.10.2006 (Чт) 13:26

На форме расположено несколько элементов Combobox
Combobox1, Combobox2, Combobox3 необходимо последовательно заполнить их.
Пробовал следующую конструкцию

UserForm1.ComboBox(NumCombo).AddItem rs.Fields(Fild)

выдает ошибку "Member or data member not found"
Подскажите как это можно реализовать ?[/code]

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.10.2006 (Чт) 13:31

Код: Выделить всё
    For i = 1 To 5
        Controls("ComboBox" & i).AddItem rs.Fields(Fild)
    Next i
Привет,
KL

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 26.10.2006 (Чт) 13:36

или делай массив контролов
Весь мир матрица, а мы в нем потоки байтов!

Dmi3i4
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 06.07.2006 (Чт) 9:59

Сообщение Dmi3i4 » 26.10.2006 (Чт) 13:48

KL
Попробовал Ваш вариант выдает
"Sub or Function not defined"
для строки
Controls("ComboBox" & NumCombo).AddItem rs.Fields(Fild)

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 26.10.2006 (Чт) 13:54

KL

Dmi3i4



Все ведь дело в том, что надо бы писать UserForm1 перед Controls

Иначе в самом деле неясно, какие там контролы и что откуда почему зачем и так далее.

Dmi3i4
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 06.07.2006 (Чт) 9:59

Сообщение Dmi3i4 » 26.10.2006 (Чт) 14:09

RayShade
Добавил UserForm1 и всё заработало - спасибо !

Всем Спасибо за помощь !

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.10.2006 (Чт) 14:17

RayShade писал(а):KL
Dmi3i4

Все ведь дело в том, что надо бы писать UserForm1 перед Controls
Иначе в самом деле неясно, какие там контролы и что откуда почему зачем и так далее.


Все зависит от того, из какого модуля вызывается процедура - если из модуля UserForm1 (мой случай), то

Controls("ComboBox" & i).AddItem rs.Fields(Fild)

по умолчанию

Me.Controls("ComboBox" & i).AddItem rs.Fields(Fild)

т.е.

UserForm1.Controls("ComboBox" & i).AddItem rs.Fields(Fild)

т.е.

ThisWokbook.UserForm1.Controls("ComboBox" & i).AddItem rs.Fields(Fild)

т.е.

Application.ThisWokbook.UserForm1.Controls("ComboBox" & i).AddItem rs.Fields(Fild)
Привет,
KL

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 26.10.2006 (Чт) 14:31

UserForm1.Controls - эта конструкция, которая позволяет не париться на тему контекста :)

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.10.2006 (Чт) 14:45

А я и не спорю - я объясняю причину :-) Опять же - вдруг человек что нового для себя узнает.

Другое дело, что лично я предпочитаю "париться на тему контекста" (не велика забота, надо сказать) засчет чего значительно сокращаю размер написанного кода. Поскольку я по жизни не программист, мои глаза и нервы не выносят "спагетти" в коде.
Привет,
KL

Djars
Новичок
Новичок
Аватара пользователя
 
Сообщения: 44
Зарегистрирован: 09.06.2004 (Ср) 17:29

Сообщение Djars » 16.03.2008 (Вс) 2:47

а как сделать все тоже самое, но только на листе MSWord?
т.е. перебрать
Код: Выделить всё
For i = 1 To 5
    Controls("objCbo" & i).AddItem CStr(i)
Next i


что нужно поставить перед Controls, чтобы все ComboBox можно было оббежать?

В моем документе новый ComboBox создается с помощью копирования предыдущего. Количество ComboBox известно = количеству строк в таблице. С помощью кнопок пользователь может удалять и прибавлять строки.

Мне нужно новые комбо заполнять значениями из старых, т.к. при копировании они не передаются, или есть такое копирование со значениями?

Спасибо


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 65

    TopList