Доброго времени коллеги. Стал на одном вопросе, не могу прописать один комбобокс з зависимым списком. [vba]
Код
Private Sub ComboBox7_Change() Dim mas() Dim cl As Collection Set cl = New Collection
xxx = ComboBox7.Value
With ComboBox8 .Clear For i = 1 To UBound(m8, 1) If m8(i, 1) = xxx Then yyy = m8(i, 2) .AddItem yyy End If Next i On Error Resume Next .ListIndex = 0 On Error GoTo 0 End With End Sub
[/vba] Если я правильно прописал это код. То он должен после определения текста в комбобокс 7 записать данные в комбобокс 8 их массива m8 [vba]
Код
With Sheets("массив") конец = .Cells(Rows.Count, 2).End(xlUp).Row Y = .Cells(1, Columns.Count).End(xlToLeft).Column Set rgRange = .Range(.Cells(2, 2), .Cells(конец, 2))
m8 = rgRange.Value End With
Set cl = New Collection
On Error Resume Next For i = 1 To UBound(m8, 1) xxx = m8(i, 1) If xxx <> "" Then cl.Add xxx, xxx End If Next i On Error GoTo 0
For Each itm In cl ComboBox8.AddItem itm Next
[/vba] Но он у меня только очищает данные из комбобокса 8 Что не так прописал или я не правильно понимаю этот код Всем спасибо
Доброго времени коллеги. Стал на одном вопросе, не могу прописать один комбобокс з зависимым списком. [vba]
Код
Private Sub ComboBox7_Change() Dim mas() Dim cl As Collection Set cl = New Collection
xxx = ComboBox7.Value
With ComboBox8 .Clear For i = 1 To UBound(m8, 1) If m8(i, 1) = xxx Then yyy = m8(i, 2) .AddItem yyy End If Next i On Error Resume Next .ListIndex = 0 On Error GoTo 0 End With End Sub
[/vba] Если я правильно прописал это код. То он должен после определения текста в комбобокс 7 записать данные в комбобокс 8 их массива m8 [vba]
Код
With Sheets("массив") конец = .Cells(Rows.Count, 2).End(xlUp).Row Y = .Cells(1, Columns.Count).End(xlToLeft).Column Set rgRange = .Range(.Cells(2, 2), .Cells(конец, 2))
m8 = rgRange.Value End With
Set cl = New Collection
On Error Resume Next For i = 1 To UBound(m8, 1) xxx = m8(i, 1) If xxx <> "" Then cl.Add xxx, xxx End If Next i On Error GoTo 0
For Each itm In cl ComboBox8.AddItem itm Next
[/vba] Но он у меня только очищает данные из комбобокса 8 Что не так прописал или я не правильно понимаю этот код Всем спасибоSanttic
Создал файлик, для более детальной ясности что не выходит. При выборе в "1" "ухты ухты" в "2" должно появиться автоматом "дада" и соответственно в "3" должно быть "ой ой ой ".Но при "ухты ухты" в файле может быть от 5 до 100 строк. и соответственно в "2" может быть не только "дада" а все что относиться к "ухты ухты" и третий соответсвенно. Что не так делаю, не пойму. Причем эта проблема только с этими комбами у меня. Остальные работают и автоматом заполняются с возможностью выбора. Это зависимо выпадающие списки.
Создал файлик, для более детальной ясности что не выходит. При выборе в "1" "ухты ухты" в "2" должно появиться автоматом "дада" и соответственно в "3" должно быть "ой ой ой ".Но при "ухты ухты" в файле может быть от 5 до 100 строк. и соответственно в "2" может быть не только "дада" а все что относиться к "ухты ухты" и третий соответсвенно. Что не так делаю, не пойму. Причем эта проблема только с этими комбами у меня. Остальные работают и автоматом заполняются с возможностью выбора. Это зависимо выпадающие списки.Santtic
Подскажите пожалуйста, у меня возникла проблема с одни моментом. У вас он тоже наблюдается. Например у "ухты ухты" в таблице, значений относящихся к нему может быть тысяча а иногда и 5 тысяч. Со всеми работает, а именно с "ухты ухты" подвисает и висит файл. Правда в столбце J есть и пустые ячейки, из за чего это может быть? У Doober работает, только реализация его кода мне не ясна) мало еще опыта
Подскажите пожалуйста, у меня возникла проблема с одни моментом. У вас он тоже наблюдается. Например у "ухты ухты" в таблице, значений относящихся к нему может быть тысяча а иногда и 5 тысяч. Со всеми работает, а именно с "ухты ухты" подвисает и висит файл. Правда в столбце J есть и пустые ячейки, из за чего это может быть? У Doober работает, только реализация его кода мне не ясна) мало еще опытаSanttic
Да это увидел, но сам процесс формирования я не понимаю, что за чем и как. Если я этого не понимаю, то что то написать, я в жизни не напишу))) Я технарь, сервисмен)) В какой строке у вас идет заполнение со старта? Форма в вода которую делаю, со старта должна быть пустой, а вот когда только делаю выбор чего то тогда и начинается процесс, я видать не четко выразился первый раз, сори) Код ваш да, прикольный, формулами я его вижу как реализовать))) а вот макрос, покручу. ХМ, никогда бы не подумал что библиотекам словарем можно решить вопрос
Да это увидел, но сам процесс формирования я не понимаю, что за чем и как. Если я этого не понимаю, то что то написать, я в жизни не напишу))) Я технарь, сервисмен)) В какой строке у вас идет заполнение со старта? Форма в вода которую делаю, со старта должна быть пустой, а вот когда только делаю выбор чего то тогда и начинается процесс, я видать не четко выразился первый раз, сори) Код ваш да, прикольный, формулами я его вижу как реализовать))) а вот макрос, покручу. ХМ, никогда бы не подумал что библиотекам словарем можно решить вопросSanttic
Сообщение отредактировал Santtic - Среда, 18.08.2021, 12:14
пропустил) Хороший военный Спасибо большое. PElena, подскажите пожалуйста из за чего может так быть, что когда большое количество соответствующих "ухты ухты" файл виснет Столкнулся еще с одним заданием...Оказывается в таблице есть и пропуски т.е. отсутствуют данные, но через них все-равно должен идти выбор... т.е. 1к.б."ухты ухты" - 2к.б (пусто) и потом оказывается есть данные в 3к.б. Есть решение прописать скрытые к.б. (комбобоксы) которые будут выполняться при определенном условии, но такой макрос растянуть можно на месяц писанины или я ошибаюсь?
пропустил) Хороший военный Спасибо большое. PElena, подскажите пожалуйста из за чего может так быть, что когда большое количество соответствующих "ухты ухты" файл виснет Столкнулся еще с одним заданием...Оказывается в таблице есть и пропуски т.е. отсутствуют данные, но через них все-равно должен идти выбор... т.е. 1к.б."ухты ухты" - 2к.б (пусто) и потом оказывается есть данные в 3к.б. Есть решение прописать скрытые к.б. (комбобоксы) которые будут выполняться при определенном условии, но такой макрос растянуть можно на месяц писанины или я ошибаюсь?Santtic
Сообщение отредактировал Santtic - Среда, 18.08.2021, 14:56
В преф не играете. Есть черный ящик, ему назначить нужные столбцы, на выходе правильная работа.Зачем в подробности вдаваться, если обеспечивает функционал
В преф не играете. Есть черный ящик, ему назначить нужные столбцы, на выходе правильная работа.Зачем в подробности вдаваться, если обеспечивает функционалdoober
Добрый день. Скажите пожалуйста, а можно как то сделать ваш макрос так что бы он не был жестко подвязан к столбцу. А привязка была бы по имени столбца. Через [vba]
Добрый день. Скажите пожалуйста, а можно как то сделать ваш макрос так что бы он не был жестко подвязан к столбцу. А привязка была бы по имени столбца. Через [vba]
Private Sub UserForm_Activate() Set C_is1 = CreateObject("scripting.dictionary") Set C_is2 = CreateObject("scripting.dictionary") Set C_is3 = CreateObject("scripting.dictionary") Dim mas1, mas2, mas3, Key1 As String, Key2 As String, Key3 As String, key As String
ComboBox7.Clear ComboBox8.Clear ComboBox9.Clear
With Sheets("дата") Dim rng As Range col1 = 0 col2 = 0 col3 = 0 Set rng = .Rows(1).Find("вася 1", , , xlWhole) If rng Is Nothing Then Exit Sub col1 = rng.Column Set rng = .Rows(1).Find("вася 2", , , xlWhole) If rng Is Nothing Then Exit Sub col2 = rng.Column Set rng = .Rows(1).Find("вася 3", , , xlWhole) If rng Is Nothing Then Exit Sub col3 = rng.Column конец = .Cells(Rows.Count, 2).End(xlUp).Row mas1 = .Cells(1, col1).Resize(конец, 2) mas2 = .Cells(1, col2).Resize(конец, 2) mas3 = .Cells(1, col3).Resize(конец, 2) For n = 2 To UBound(mas1) Key1 = mas1(n, 1) Key2 = mas2(n, 1) Key3 = mas3(n, 1) If Not C_is1.Exists(Key1) Then C_is1.Item(Key1) = Key1 End If key = Key1 & "_" & Key2 If Not C_is2.Exists(key) Then C_is2.Item(key) = Key2 End If
key = Key1 & "_" & Key2 & "_" & Key3 If Not C_is3.Exists(key) Then C_is3.Item(key) = Key3 End If
Next
End With
keys = C_is1.keys For Each itm In keys ComboBox7.AddItem itm Next If C_is1.Count > 0 Then ComboBox7.ListIndex = 0 End Sub
[/vba]
Можно
[vba]
Код
Private Sub UserForm_Activate() Set C_is1 = CreateObject("scripting.dictionary") Set C_is2 = CreateObject("scripting.dictionary") Set C_is3 = CreateObject("scripting.dictionary") Dim mas1, mas2, mas3, Key1 As String, Key2 As String, Key3 As String, key As String
ComboBox7.Clear ComboBox8.Clear ComboBox9.Clear
With Sheets("дата") Dim rng As Range col1 = 0 col2 = 0 col3 = 0 Set rng = .Rows(1).Find("вася 1", , , xlWhole) If rng Is Nothing Then Exit Sub col1 = rng.Column Set rng = .Rows(1).Find("вася 2", , , xlWhole) If rng Is Nothing Then Exit Sub col2 = rng.Column Set rng = .Rows(1).Find("вася 3", , , xlWhole) If rng Is Nothing Then Exit Sub col3 = rng.Column конец = .Cells(Rows.Count, 2).End(xlUp).Row mas1 = .Cells(1, col1).Resize(конец, 2) mas2 = .Cells(1, col2).Resize(конец, 2) mas3 = .Cells(1, col3).Resize(конец, 2) For n = 2 To UBound(mas1) Key1 = mas1(n, 1) Key2 = mas2(n, 1) Key3 = mas3(n, 1) If Not C_is1.Exists(Key1) Then C_is1.Item(Key1) = Key1 End If key = Key1 & "_" & Key2 If Not C_is2.Exists(key) Then C_is2.Item(key) = Key2 End If
key = Key1 & "_" & Key2 & "_" & Key3 If Not C_is3.Exists(key) Then C_is3.Item(key) = Key3 End If
Next
End With
keys = C_is1.keys For Each itm In keys ComboBox7.AddItem itm Next If C_is1.Count > 0 Then ComboBox7.ListIndex = 0 End Sub