Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Связанные списки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Связанные списки (Макросы/Sub)
Связанные списки
combat Дата: Пятница, 16.10.2015, 23:09 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Имеются два независимых списка, все работает
[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
Дата добавления - 16.10.2015 в 23:09
combat Дата: Суббота, 17.10.2015, 00:08 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
поправьте если не прав
в первом цикле выбранная позиция 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 - Суббота, 17.10.2015, 00:15
 
Ответить
Сообщениепоправьте если не прав
в первом цикле выбранная позиция 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
Дата добавления - 17.10.2015 в 00:08
wild_pig Дата: Суббота, 17.10.2015, 00:50 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
Можно на словарях сделать
К сообщению приложен файл: 2639151.xls (45.5 Kb)
 
Ответить
СообщениеМожно на словарях сделать

Автор - wild_pig
Дата добавления - 17.10.2015 в 00:50
Roman777 Дата: Суббота, 17.10.2015, 00:52 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
combat, Согласно Вашему примеру из другой темы сделал, если не разбирётесь, я поясню...
К сообщению приложен файл: 4383379-1-.rar (98.4 Kb)


Много чего не знаю!!!!
 
Ответить
Сообщениеcombat, Согласно Вашему примеру из другой темы сделал, если не разбирётесь, я поясню...

Автор - Roman777
Дата добавления - 17.10.2015 в 00:52
Roman777 Дата: Суббота, 17.10.2015, 00:54 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
тут используется 2 кода:
запускаете сначала код в
в Модуле1 (там же введены публичные переменные 2 шт в самом верху)
и второй код - для второго Комбобокса отрабатывается уже в самой форме после выбора в 1м комбобоксе.


Много чего не знаю!!!!
 
Ответить
Сообщениетут используется 2 кода:
запускаете сначала код в
в Модуле1 (там же введены публичные переменные 2 шт в самом верху)
и второй код - для второго Комбобокса отрабатывается уже в самой форме после выбора в 1м комбобоксе.

Автор - Roman777
Дата добавления - 17.10.2015 в 00:54
combat Дата: Суббота, 17.10.2015, 14:59 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Да все сделал, работает по вашему файлу
перенес к себе

Код с формы UserForm3 перенес с заменой в рабочую форму UserForm2
потом макрос Т1 поставил на запуск, вот здесь наверное напортачил

[vba]
Код
Private Sub ComboBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call T1
End Sub
[/vba]

чет опять проблема...
К сообщению приложен файл: _4___97-2003_.rar (99.9 Kb)
 
Ответить
СообщениеДа все сделал, работает по вашему файлу
перенес к себе

Код с формы UserForm3 перенес с заменой в рабочую форму UserForm2
потом макрос Т1 поставил на запуск, вот здесь наверное напортачил

[vba]
Код
Private Sub ComboBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call T1
End Sub
[/vba]

чет опять проблема...

Автор - combat
Дата добавления - 17.10.2015 в 14:59
Roman777 Дата: Суббота, 17.10.2015, 17:02 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
combat, на самом деле у Вас ругался эксель, потому что воспринимал T1 не как имя макроса, честно говоря я не знаю с чем (возможно какие-то ограничения). Эту часть я поправил изменив название T1 на Tr1. Кроме этого в самой процедуре T1(Tr1) была ошибка, осталось обращение к форме Userform3.Combobox1 (заполнялся бы бокс не на той форме, которой вы хотите), я поменял на Userform2.Combobox2.
И наконец, всё же предлагаю Вам вызывать процедуру T1 на событии Userform_Inicialisate (мб дет ошибка, пишу по памяти), вообще можно попробовать поставить ещё на Userform_Activate. Потому что Ваше событие (и ещё другое, которое я проверил и закомментировал) будет срабатывать чаще чем нужно и вы толком не сможете нормально выбрать в комбобоксе 1 нормально то что хотите.
К сообщению приложен файл: 3888421.rar (94.5 Kb)


Много чего не знаю!!!!
 
Ответить
Сообщениеcombat, на самом деле у Вас ругался эксель, потому что воспринимал T1 не как имя макроса, честно говоря я не знаю с чем (возможно какие-то ограничения). Эту часть я поправил изменив название T1 на Tr1. Кроме этого в самой процедуре T1(Tr1) была ошибка, осталось обращение к форме Userform3.Combobox1 (заполнялся бы бокс не на той форме, которой вы хотите), я поменял на Userform2.Combobox2.
И наконец, всё же предлагаю Вам вызывать процедуру T1 на событии Userform_Inicialisate (мб дет ошибка, пишу по памяти), вообще можно попробовать поставить ещё на Userform_Activate. Потому что Ваше событие (и ещё другое, которое я проверил и закомментировал) будет срабатывать чаще чем нужно и вы толком не сможете нормально выбрать в комбобоксе 1 нормально то что хотите.

Автор - Roman777
Дата добавления - 17.10.2015 в 17:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Связанные списки (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!