Dim Rg(2 To 3) As Range
Private Sub ComboBox1_Change()
Dim V, R&
ComboBox2.Clear: ComboBox3.Clear: ComboBox4.Clear: If ComboBox1.ListIndex < 0 Then Exit Sub
With Sheet1.ListObjects(1).Range.Columns(1)
Set Rg(2) = .Parent.Range(.Find(ComboBox1.Text, , xlValues, 1, , 1)(1, 2), .Find(ComboBox1.Text, , xlValues, 1, , 2)(1, 2))
End With
V = Rg(2)
If IsArray(V) Then
ComboBox2.AddItem V(1, 1)
For R = 2 To UBound(V)
If V(R, 1) <> V(R - 1, 1) Then ComboBox2.AddItem V(R, 1)
Next
Else
ComboBox2.AddItem V
End If
ComboBox2.ListIndex = ComboBox2.ListCount > 1
End Sub
Private Sub ComboBox2_Change()
Dim V, R&
ComboBox3.Clear: ComboBox4.Clear: If ComboBox2.ListIndex < 0 Then Exit Sub
With Rg(2)
Set Rg(3) = .Parent.Range(.Find(ComboBox2.Text, .Cells(.Count), xlValues, 1, , 1)(1, 17), _
.Find(ComboBox2.Text, , xlValues, 1, , 2)(1, 17))
End With
V = Rg(3)
If IsArray(V) Then
ComboBox3.AddItem V(1, 1)
For R = 2 To UBound(V)
If V(R, 1) <> V(R - 1, 1) Then ComboBox3.AddItem V(R, 1)
Next
Else
ComboBox3.AddItem V
End If
ComboBox3.ListIndex = ComboBox3.ListCount > 1
End Sub
Private Sub ComboBox3_Change()
Dim V, R&
ComboBox4.Clear: If ComboBox3.ListIndex < 0 Then Exit Sub
With Rg(3)
V = .Parent.Range(.Find(ComboBox3.Text, .Cells(.Count), xlValues, 1, , 1)(1, 2), _
.Find(ComboBox3.Text, , xlValues, 1, , 2)(1, 2))
End With
If IsArray(V) Then
ComboBox4.AddItem V(1, 1)
For R = 2 To UBound(V)
If V(R, 1) <> V(R - 1, 1) Then ComboBox4.AddItem V(R, 1)
Next
Else
ComboBox4.AddItem V
End If
ComboBox4.ListIndex = ComboBox4.ListCount > 1
End Sub
Private Sub UserForm_Initialize()
Dim V, R&
V = Sheet1.ListObjects(1).Range.Columns(1)
If IsArray(V) Then
For R = 2 To UBound(V)
If V(R, 1) <> V(R - 1, 1) Then ComboBox1.AddItem V(R, 1)
Next
Else
ComboBox1.AddItem V
End If
ComboBox1.ListIndex = ComboBox1.ListCount > 1
End Sub
Private Sub UserForm_Terminate()
Erase Rg
End Sub