Страницы: 1
RSS
Зависимый выпадающий список ComboBox в UserForm VBA, Зависимый выпадающий список ComboBox в UserForm VBA
 
Доброго времени суток, подскажите пож-та как можно сделать такую же форму ввода как в примере, но без справочного листа (суть в том чтобы значения ComboBox2 зависели от выбранного в ComboBox1. Например в  ComboBox1 выбрана одежда то в ComboBox2 будет доступен выбор из списка одежда). Все делал через именование диапазонов (думал что поможет создание именованных констант, но почему т не работает). Подскажите как быть. Заранее спасибо. Файл во вложений сделал как пример.
 
как вариант
 
ivanok_v2,  еще раз добрый день, спасибо за участие. Возможно реализовать способ подстановки "из ниоткуда" (Термин взял из https://www.planetaexcel.ru/video/ , 7 видео с конца ).Подскажите такое возможно?! Пытался сделать именованный диапазон    Товар ={"Одежда":"Фрукты":"Овощи"} , но не помогло. Или это не есть реально сделать?! Еще раз спасибо. К сожалению не совсем умею читать макросы, но я понял что Ваш вариант все равно требует диапазона на листе.
Изменено: Ov198 - 13.09.2018 14:52:47
 
Что Вы подразумеваете под
Цитата
Ov198 написал:
подстановки "из ниоткуда"
думаю что в "ниоткуда" есть только "ничто".
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, подразумевалось что данные будут размещены где нибудь (в коде или как именованные константы), но не на листе в книге. Спасибо. Вот задался вопросом такое возможно?!
 
можно сразу в форму прописать, но тогда зависимость комбобоксов реализовать сложнее будет. Чем вас не устраивает на отдельном листе?
 
Цитата
Ov198 написал:
в коде или как именованные константы
Это сделать не сложно, но условие будет жестким , без вариантов, т.е. если на листе появится категория не записанная в коде то и выбрать Вы ее не сможете. Опять же опишите алгоритм поиска и добавления во второй комбобокс. Каким образом это должно происходить, что будет критерием отбора?
Изменено: Nordheim - 13.09.2018 15:05:43
"Все гениальное просто, а все простое гениально!!!"
 
У вас немного не корректный пример, т.е. показано как не должно быть, но не показано как должно, и какая структура таблицы. Возможность заполнения уникальными данными combobox1 напрямую из таблиц а потом в зависимости от значение в первом списке заполнять второй никто не отменял.
Изменено: Nordheim - 13.09.2018 15:08:44
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Ov198 написал:
Вот задался вопросом такое возможно?!
Что бы задаться этим вопросом, нужно понимание алгоритма заполнения списков.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, подскажите как переписать код, чтобы он выдавал при выборе Одежды в ComboBox1 список  "Носки", "Куртка", "Платье" было в ComboBox2  и соответственно при выборе фрукты - Яблоко, банан, огурец. А у меня он при выборе Фрукты выдает снова носки и т.д. Спасибоооо.

Private Sub ComboBox1_Change()

If ComboBox1.Value = "Одежда" Then

ComboBox2.AddItem "Носки"
ComboBox2.AddItem "Куртка"
ComboBox2.AddItem "Платье"

If ComboBox1.Value = "Фрукты" Then

ComboBox2.AddItem "Банан"
ComboBox2.AddItem "Яблоко"
ComboBox2.AddItem "Огурец"

End If
End If
End Sub

Спасибо за Ваши советы.
Изменено: Ov198 - 13.09.2018 15:22:37
 
Цитата
Ov198 написал:
подскажите как переписать код
Попробуйте так:

Код
Private Sub ComboBox1_Change()
ComboBox2.Clear
Select Case ComboBox1.Value
    Case "Одежда": ComboBox2.List = Array("Носки", "Куртка", "Платье")
    Case "Фрукты": ComboBox2.List = Array("Банан", "Яблоко", "Огурец")
End Select
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Ov198,
Мой вариант самонаполянющий
тоесть если нет пишите в комбоксе вручную, макрос додаст его в лист.
а далее, внесенные даные будут в списке при повторном вызове формы.

Понятие из неоткуда, ето вручную внесенно пользователем, что и реализовано в моем примере.
 
Nordheim, спасибо, сейчас попробую.
 
ivanok_v2, спасибо большое. Я видимо недопонял макрос = )
 
Цитата
[CODE][/CODE]
Цитата
Private Sub CommandButton1_Click() Worksheets("Список").Range("A10").Value = UserForm1.ComboBox1.Value Worksheets("Список").Range("B10").Value = UserForm1.ComboBox2.Value End Sub
Ov198
, вам нужно написать алгоритм вставки в последнюю строку поля в место вашего кода.
ну думаю тут сами справитесь, если нет пишите.
Изменено: ivanok_v2 - 13.09.2018 18:30:05
Страницы: 1
Наверх