Контролы на форме в Excel-у

Программирование на Visual Basic for Applications
syst60
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.06.2003 (Чт) 14:31

Контролы на форме в Excel-у

Сообщение syst60 » 05.06.2003 (Чт) 14:36

Пожалуйста. подскажите, как создать на форме в Excel-е массивы Combobox-ов, MaskEdBox-ов и Textbox-ов?
Форма выглядит так:
Combo1 Masked1 Textbox1
Combo2 Masked2 Textbox2
Combo3 Masked3 Textbox3
....
Combo10 Masked10 Textbox10
И нужно каждую строку обрабатывать одинаково.
Для этого хотелось бы обращаться к контролам, как к элементам массива.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 05.06.2003 (Чт) 14:41

Массив не создашь, можно создать массив указателей

dim comb(3) as combobox

set comb(1) =combobox1
set comb(2) =combobox2
set comb(3) =combobox3

Изменения в указателях повлекут за собой изменения в объектах.

К сожалению делегирование событий в VBA не возможно.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 05.06.2003 (Чт) 14:46

Вернее делегирование кое-как возможно, можно от событийных процедур объекто запускать не событийную процедуру и передавать в нее имя объекта в котором произошло событие.

syst60
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.06.2003 (Чт) 14:31

Сообщение syst60 » 05.06.2003 (Чт) 16:36

Спасибо огромное!
Действительно, все получилось для ComboBox и MaskEdBox-ов!

Только вот почему-то не удается то же самое для TextBox.
Пишу:
Dim t(3) As TextBox
Set t(1) = TextBox1
Set t(2) = TextBox2
Set t(3) = TextBox3
И получаю "Ошибка выполнения (13) Несоответствие типа", когда дело доходит до строки Set t(1)=TextBox
Или TextBox принципиально отличается от остальных контролов, и для него указатели сделать нельзя?

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 05.06.2003 (Чт) 16:42

Ничем не отличается, очень странно, что не получилось,(может имя типа написал не правильно?), попробуй объявить указатель как Variant:
Dim t(3) As Variant
Set t(1) = TextBox1
Set t(2) = TextBox2
Set t(3) = TextBox3

syst60
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 05.06.2003 (Чт) 14:31

Сообщение syst60 » 06.06.2003 (Пт) 13:37

О! Variant! Yes!!!!
Спасибо!
:D :lol: :P


Вернуться в VBA

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

Сейчас этот форум просматривают: Google-бот и гости: 5

    TopList