Добрый день коллеги. Вчера Елена подсказала мне макрос зависимых выпадающих списков. Обработав таблицу я заметил некорректную его работу. А именно. При активации комбобокса, список сразу не выпадает, мне надо нажать или пробел или что то в этом комбике. Но и тут же при нажатии пробела, задваивается или затраивается значения выпадающих значений. Таких Списков у меня примерно 15 наверное, и оператору для ввода будет проблематична такая форма ввода. Подскажите пожалуйста что поправить, при условии что таких комбобоксов будет 15. Спасибо, всем хорошего дня.
[vba]
Код
Private Sub ComboBox1_Change()
'ComboBox3.Clear With CreateObject("scripting.dictionary") For i = 1 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row 'If ComboBox1.Value = Worksheets("Контакти").Cells(i, 1) Then у меня активны эта строка If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then .Add Trim(Worksheets("Контакти").Cells(i, 1)), i ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value End If 'End If у меня активны эта строка Next i End With End Sub
[/vba]
В подсказанном коде еще был один момент, который отвечает за инициализацию [vba]
Код
Private Sub UserForm_Initialize() With CreateObject("scripting.dictionary") For i = 2 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then .Add Trim(Worksheets("Контакти").Cells(i, 1)), i ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value End If Next i End With End Sub
[/vba] Но по такому принципу я не могу все комбики прописывать, такое прокатывало только с обычными выпадающими списками, там работало. как их связать, вот в чем вопрос
Добрый день коллеги. Вчера Елена подсказала мне макрос зависимых выпадающих списков. Обработав таблицу я заметил некорректную его работу. А именно. При активации комбобокса, список сразу не выпадает, мне надо нажать или пробел или что то в этом комбике. Но и тут же при нажатии пробела, задваивается или затраивается значения выпадающих значений. Таких Списков у меня примерно 15 наверное, и оператору для ввода будет проблематична такая форма ввода. Подскажите пожалуйста что поправить, при условии что таких комбобоксов будет 15. Спасибо, всем хорошего дня.
[vba]
Код
Private Sub ComboBox1_Change()
'ComboBox3.Clear With CreateObject("scripting.dictionary") For i = 1 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row 'If ComboBox1.Value = Worksheets("Контакти").Cells(i, 1) Then у меня активны эта строка If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then .Add Trim(Worksheets("Контакти").Cells(i, 1)), i ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value End If 'End If у меня активны эта строка Next i End With End Sub
[/vba]
В подсказанном коде еще был один момент, который отвечает за инициализацию [vba]
Код
Private Sub UserForm_Initialize() With CreateObject("scripting.dictionary") For i = 2 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then .Add Trim(Worksheets("Контакти").Cells(i, 1)), i ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value End If Next i End With End Sub
[/vba] Но по такому принципу я не могу все комбики прописывать, такое прокатывало только с обычными выпадающими списками, там работало. как их связать, вот в чем вопрос Santtic
Santtic, По сути не видно самой задачи или вопроса, который нужно решить. Где Ваши зависимые списки. где куча combobox? Лучше создайте пример и опишите задачу.
Santtic, По сути не видно самой задачи или вопроса, который нужно решить. Где Ваши зависимые списки. где куча combobox? Лучше создайте пример и опишите задачу.skais
Снова всем доброго времени. Сделал на примере трех комбиков. Задача стоит у меня в том: что бы когда я выберу петрова Ячейка А1 (контакти), мне или автоматом или же в ручном режиме предложило выбор "Олег", после того как выберу Олег мне или предложило или в ручную выбрал только цифру 5 из ячейки С1. Сейчас вроде все эти условия работают. Но, когда я нажимаю на комбик - перечень данных не выпадает, мне надо нажать или пробел или еще что то что бы выпал перечень. Если я нажму пробел в комбике два раза - перечень задвоится, если нажму пробел три раза перечень затроится это меня не устраивает т.к., оператор который будет пользоваться этим еще хуже разбирается в екселе чем я)) таких комбов будет штук 15, может со временем еще больше. Что я не так делаю, подскажите пожалуйста, где я допускаю ошибку
Снова всем доброго времени. Сделал на примере трех комбиков. Задача стоит у меня в том: что бы когда я выберу петрова Ячейка А1 (контакти), мне или автоматом или же в ручном режиме предложило выбор "Олег", после того как выберу Олег мне или предложило или в ручную выбрал только цифру 5 из ячейки С1. Сейчас вроде все эти условия работают. Но, когда я нажимаю на комбик - перечень данных не выпадает, мне надо нажать или пробел или еще что то что бы выпал перечень. Если я нажму пробел в комбике два раза - перечень задвоится, если нажму пробел три раза перечень затроится это меня не устраивает т.к., оператор который будет пользоваться этим еще хуже разбирается в екселе чем я)) таких комбов будет штук 15, может со временем еще больше. Что я не так делаю, подскажите пожалуйста, где я допускаю ошибку Santtic
Трижды перечитал, но так и не понял зачем выбирать "Олег" и "5" если они находятся в одной строке и так понятны их значения. Может быть на тот случай если Петровых несколько? Да и в приведенном примере не вижу как вы наполняете комбобокс. Если дублируются значения в комбобоксе, то перед его наполнением попробуйте добавить строку: [vba]
Код
Combobox2.clear
[/vba]
Трижды перечитал, но так и не понял зачем выбирать "Олег" и "5" если они находятся в одной строке и так понятны их значения. Может быть на тот случай если Петровых несколько? Да и в приведенном примере не вижу как вы наполняете комбобокс. Если дублируются значения в комбобоксе, то перед его наполнением попробуйте добавить строку: [vba]
Будут уникальные значения, относительно которых будет формироваться отчет. Данные раскиданы в разных диапазонах, а диапазон в свою очередь сталый. Сейчас попробую вашу подсказку. Спасибо.
Будут уникальные значения, относительно которых будет формироваться отчет. Данные раскиданы в разных диапазонах, а диапазон в свою очередь сталый. Сейчас попробую вашу подсказку. Спасибо.Santtic
Попробовал, ничего не вышло, он тогда очищает комбобокс и ничего не введешь. Инициализацию прописал, но только на Combobox1, второй ка подтягивался через пробол так и подтягивается. Задвоение значений в кобиках так же осталось
Попробовал, ничего не вышло, он тогда очищает комбобокс и ничего не введешь. Инициализацию прописал, но только на Combobox1, второй ка подтягивался через пробол так и подтягивается. Задвоение значений в кобиках так же осталось Santtic
Нашел причину задваивания данных но не решение. Причина возникает когда я начинаю строить зависимые выпадающие списки с друго го листа. Т.Е. данные сейчас собираются с двух листов, и отсюда начинается вся пляска. Кто может подсказать как [vba]
Код
Private Sub ComboBox1_Change()
'ComboBox3.Clear With CreateObject("scripting.dictionary") For i = 1 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row 'If ComboBox1.Value = Worksheets("Контакти").Cells(i, 1) Then у меня активны эта строка If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then .Add Trim(Worksheets("Контакти").Cells(i, 1)), i ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value End If 'End If у меня активны эта строка Next i End With End Sub
[/vba] прописать что бы данные тянуло со второго листа без задваивания, название листа естественно изменил) Как провести инициализацию формы для двух листов. Первых три комбобокса работают с одни листом, в следующие со вторым. Из за того что я прописываю второй лист с указанием привязки к предыдущему комбобоксу, я получаю задваивание данных
Нашел причину задваивания данных но не решение. Причина возникает когда я начинаю строить зависимые выпадающие списки с друго го листа. Т.Е. данные сейчас собираются с двух листов, и отсюда начинается вся пляска. Кто может подсказать как [vba]
Код
Private Sub ComboBox1_Change()
'ComboBox3.Clear With CreateObject("scripting.dictionary") For i = 1 To Worksheets("Контакти").Cells(Rows.Count, 1).End(xlUp).Row 'If ComboBox1.Value = Worksheets("Контакти").Cells(i, 1) Then у меня активны эта строка If Not .Exists(Trim(Worksheets("Контакти").Cells(i, 1))) Then .Add Trim(Worksheets("Контакти").Cells(i, 1)), i ComboBox1.AddItem Worksheets("Контакти").Cells(i, 1).Value End If 'End If у меня активны эта строка Next i End With End Sub
[/vba] прописать что бы данные тянуло со второго листа без задваивания, название листа естественно изменил) Как провести инициализацию формы для двух листов. Первых три комбобокса работают с одни листом, в следующие со вторым. Из за того что я прописываю второй лист с указанием привязки к предыдущему комбобоксу, я получаю задваивание данных Santtic
Сообщение отредактировал Santtic - Четверг, 15.07.2021, 08:10