Вот основы для такого рода связан выбор:
Это будет реализовывать уникальные значения в ComboBox1:
Private Sub UserForm_Initialize()
Dim Ws As Worksheet, _
Dic As Object, _
rCell As Range, _
Key 'As String
Set Ws = Worksheets("Sheet1")
Set Dic = CreateObject("Scripting.Dictionary")
UserForm1.ComboBox1.Clear
For Each rCell In Ws.Range("A2", Ws.Cells(Rows.Count, "A").End(xlUp))
If Not Dic.exists(LCase(rCell.Value)) Then
Dic.Add LCase(rCell.Value), Nothing
End If
Next rCell
For Each Key In Dic
UserForm1.ComboBox1.AddItem Key
Next
End Sub
И есть та часть, которая поместить значения уников в ComboBox2, когда он соответствует критерии с ComboBox1:
'При изменении значенияComboBox1
, он будет запускать этот код, так что вам нужно обновления в т здесь значения, предложенные вComboBox2
с вашими собственными тестами.
Private Sub ComboBox1_Change()
Dim Ws As Worksheet, _
Dic As Object, _
rCell As Range, _
Key 'As String
Set Ws = Worksheets("Sheet1")
Set Dic = CreateObject("Scripting.Dictionary")
Me.ComboBox2.Clear 'Clear all previously added elements
Me.ComboBox2.Value = vbNullString 'Set active value as an empty string
'------Here is where you need to do your tests-------
For Each rCell In Ws.Range("B2", Ws.Cells(Rows.Count, "B").End(xlUp))
If rCell.Offset(0, -1) <> Me.ComboBox1.Value Then
Else
If Not Dic.exists(LCase(rCell.Value)) Then
Dic.Add LCase(rCell.Value), Nothing
End If
End If
Next rCell
For Each Key In Dic
UserForm1.ComboBox2.AddItem Key
Next
End Sub
И код для третьего выпадающего списка:
Private Sub ComboBox2_Change()
Dim Ws As Worksheet, _
Dic As Object, _
rCell As Range, _
Key 'As String
Set Ws = Worksheets("Sheet1")
Set Dic = CreateObject("Scripting.Dictionary")
Me.ComboBox3.Clear 'Clear all previously added elements
Me.ComboBox3.Value = vbNullString 'Set active value as an empty string
'------Here is where you need to do your tests-------
For Each rCell In Ws.Range("C2", Ws.Cells(Rows.Count, "C").End(xlUp))
If rCell.Offset(0, -1) <> Me.ComboBox2.Value And rCell.Offset(0, -2) <> Me.ComboBox1.Value Then
Else
If Not Dic.exists(LCase(rCell.Value)) Then
Dic.Add LCase(rCell.Value), Nothing
End If
End If
Next rCell
For Each Key In Dic
UserForm1.ComboBox3.AddItem Key
Next
End Sub
Колонка A \t Колонка B Девушки \t волос мальчиков \t волос Вег \t воды Non-Вег \t Вода –
Существует только одно значение для девушки, почему вам нужно поместить его в поле со списком? – Davesexcel
Это всего лишь пример. Я хочу добавить уникальные значения в combox2 из столбца «B», как только я выберу Girls из столбца «A» –