День добрый всем !
Хотел поинтересоваться у гуру как связать 2(два) ComboBox в форме по значениям - как более корректно сделать
так как есть .Text, .Value, .List, .ListIndex, .RowSource, .AddItem, .Clear и пр запутаться можно
Задача была вроде простая - 2(два) ComboBox в форме по значениям по следующим условиям:
Combobox1 имеет выпадающий список со значениями "Поставщик1", "Поставщик2", "Поставщик3"
Combobox2 не имеет ничего - данные в его лист заносятся в зависимости от значения Combobox2
(данные соответственно Товар1,Товар2,Товар3 тоже как выпадающий список)
те
в Combobox1 выбрали "Поставщик1" - получили в Combobox2 выпадающий список Товар1
в Combobox1 выбрали "Поставщик2" - получили в Combobox2 выпадающий список Товар2
в Combobox1 выбрали "Поставщик3" - получили в Combobox2 выпадающий список Товар3
По неполному знанию данного вопроса в результате экспериментов получилось и работает так:
Код |
---|
Private Sub UserForm_Activate()
ComboBox1.Text = ""
Call Поставщики'здесь макрос заполнения ComboBox1.List вып список "Поставщик1", "Поставщик2", "Поставщик3"
ComboBox2.Text = ""
ComboBox2.ListRows = 20
End Sub
|
Код |
---|
Private Sub ComboBox1_Change() 'Выберите поставщика
ComboBox1.Style = fmStyleDropDownList 'запрещаем вносить значения кроме выпадающего списка
If ComboBox1.Text = "" Then
UserForm1.ComboBox2.Clear 'стираем предыдущие значения ComboBox2
End If
If ComboBox1.Text = "Поставщик1" Then
UserForm1.ComboBox2.Clear 'стираем предыдущие значения ComboBox2
Call Товар1 'здесь макрос заполнения ComboBox2.List на Товар1 вып список
End If
If ComboBox1.Text = "Поставщик2" Then
UserForm1.ComboBox2.Clear 'стираем предыдущие значения ComboBox2
Call Товар2 'здесь макрос заполнения ComboBox2.List на Товар2 вып список
End If
If ComboBox1.Text = "Поставщик3" Then
UserForm1.ComboBox2.Clear 'стираем предыдущие значения ComboBox2
Call Товар3 'здесь макрос заполнения ComboBox2.List на Товар3 вып список
End If
End Sub
Sub Товар1 () 'здесь макрос заполнения ComboBox2.List на Товар1 вып список
''''''''''
End Sub
Sub Товар2 () 'здесь макрос заполнения ComboBox2.List на Товар2 вып список
''''''''''
End Sub
Sub Товар3 () 'здесь макрос заполнения ComboBox2.List на Товар3 вып список
''''''''''
End Sub
|
Вопросы такие:
Что лучше использовать на ввод пусто в Combobox
.Text = ""
.Value = ""
.List = ""
.ListIndex = -1
.RowSource = ""
Что лучше использовать на ввод значений по условию If ComboBox1.Text =
.Text =
.Value =
.ListIndex = 0,1 и тд
.RowSource = "......"
Что лучше использовать на ввод выпадающего списка
1) макрос заносит в .List сразу
2) макрос заносит в массив arr - а потом .AddItem arr в комбобокс
3) макрос заносит массив в .RowSource