Имеются два независимых списка, все работает [vba]
Код
For i = 1 To Worksheets("Специалисты").Cells(Rows.Count, "A").End(xlUp).Row ComboBox1.AddItem Worksheets("Специалисты").Cells(i, "A").Value Next i
For i = 1 To Worksheets("Специалисты").Cells(Rows.Count, 2).End(xlUp).Row ComboBox2.AddItem Worksheets("Специалисты").Cells(i, 2).Value Next i
[/vba]
как поставить в "зависимость" второй список от первого в первом выбираем 1отдел, во втором списке люди этого отдела, 2отдел = люди 2отдела и т.д. пролистал форум подходящего не нашел, для меня это еще сложно, поэтому помогите
Имеются два независимых списка, все работает [vba]
Код
For i = 1 To Worksheets("Специалисты").Cells(Rows.Count, "A").End(xlUp).Row ComboBox1.AddItem Worksheets("Специалисты").Cells(i, "A").Value Next i
For i = 1 To Worksheets("Специалисты").Cells(Rows.Count, 2).End(xlUp).Row ComboBox2.AddItem Worksheets("Специалисты").Cells(i, 2).Value Next i
[/vba]
как поставить в "зависимость" второй список от первого в первом выбираем 1отдел, во втором списке люди этого отдела, 2отдел = люди 2отдела и т.д. пролистал форум подходящего не нашел, для меня это еще сложно, поэтому помогитеcombat
поправьте если не прав в первом цикле выбранная позиция ComboBox1 это номер строки, допустим выбрали 1 по списку, тогда ( i ) =1 и здесь идет выбор по строкам в первом столбце, это просто....
дальше например выбрали в боксе1 вторую строку
что бы все работало
меняем переменную во втором цикле в ComboBox2 на др. допустим ( Y ), и вместо столбца 2 вставляем ( i ) т.е назначаем столбец 2 по условию переменной ( i )
по идее я назначил второму боксу 2 столбец, а переменная ( Y ) должна искать строки вообщем это все не работает, где и что не так
[vba]
Код
For i = 1 To Worksheets("Специалисты").Cells(Rows.Count, "A").End(xlUp).Row ComboBox1.AddItem Worksheets("Специалисты").Cells(i, "A").Value Next i
For y = 1 To Worksheets("Специалисты").Cells(Rows.Count, i).End(xlUp).Row ComboBox2.AddItem Worksheets("Специалисты").Cells(y, i).Value Next y
[/vba]
подразумевается, что в первом столбце будет названия отделов, второй и далее столбец, специалисты отделов, т.е. 1 строка, 1 столбца имеет список 2 столбца, 2 строка 1 столбца, список 3 столбца....
поправьте если не прав в первом цикле выбранная позиция ComboBox1 это номер строки, допустим выбрали 1 по списку, тогда ( i ) =1 и здесь идет выбор по строкам в первом столбце, это просто....
дальше например выбрали в боксе1 вторую строку
что бы все работало
меняем переменную во втором цикле в ComboBox2 на др. допустим ( Y ), и вместо столбца 2 вставляем ( i ) т.е назначаем столбец 2 по условию переменной ( i )
по идее я назначил второму боксу 2 столбец, а переменная ( Y ) должна искать строки вообщем это все не работает, где и что не так
[vba]
Код
For i = 1 To Worksheets("Специалисты").Cells(Rows.Count, "A").End(xlUp).Row ComboBox1.AddItem Worksheets("Специалисты").Cells(i, "A").Value Next i
For y = 1 To Worksheets("Специалисты").Cells(Rows.Count, i).End(xlUp).Row ComboBox2.AddItem Worksheets("Специалисты").Cells(y, i).Value Next y
[/vba]
подразумевается, что в первом столбце будет названия отделов, второй и далее столбец, специалисты отделов, т.е. 1 строка, 1 столбца имеет список 2 столбца, 2 строка 1 столбца, список 3 столбца....combat
Сообщение отредактировал combat - Суббота, 17.10.2015, 00:15
тут используется 2 кода: запускаете сначала код в в Модуле1 (там же введены публичные переменные 2 шт в самом верху) и второй код - для второго Комбобокса отрабатывается уже в самой форме после выбора в 1м комбобоксе.
тут используется 2 кода: запускаете сначала код в в Модуле1 (там же введены публичные переменные 2 шт в самом верху) и второй код - для второго Комбобокса отрабатывается уже в самой форме после выбора в 1м комбобоксе.Roman777
combat, на самом деле у Вас ругался эксель, потому что воспринимал T1 не как имя макроса, честно говоря я не знаю с чем (возможно какие-то ограничения). Эту часть я поправил изменив название T1 на Tr1. Кроме этого в самой процедуре T1(Tr1) была ошибка, осталось обращение к форме Userform3.Combobox1 (заполнялся бы бокс не на той форме, которой вы хотите), я поменял на Userform2.Combobox2. И наконец, всё же предлагаю Вам вызывать процедуру T1 на событии Userform_Inicialisate (мб дет ошибка, пишу по памяти), вообще можно попробовать поставить ещё на Userform_Activate. Потому что Ваше событие (и ещё другое, которое я проверил и закомментировал) будет срабатывать чаще чем нужно и вы толком не сможете нормально выбрать в комбобоксе 1 нормально то что хотите.
combat, на самом деле у Вас ругался эксель, потому что воспринимал T1 не как имя макроса, честно говоря я не знаю с чем (возможно какие-то ограничения). Эту часть я поправил изменив название T1 на Tr1. Кроме этого в самой процедуре T1(Tr1) была ошибка, осталось обращение к форме Userform3.Combobox1 (заполнялся бы бокс не на той форме, которой вы хотите), я поменял на Userform2.Combobox2. И наконец, всё же предлагаю Вам вызывать процедуру T1 на событии Userform_Inicialisate (мб дет ошибка, пишу по памяти), вообще можно попробовать поставить ещё на Userform_Activate. Потому что Ваше событие (и ещё другое, которое я проверил и закомментировал) будет срабатывать чаще чем нужно и вы толком не сможете нормально выбрать в комбобоксе 1 нормально то что хотите.Roman777