I have the following code to read into two drop down lists from an array. The first reads the first row of the array and selects an item from it. The second list is populated from the entries in the array column for the item selected from the first row.

It successfully reads the relevant column into "subcomparray(i)" but the line
".AddItem subcomparray(i)" does not populate the list in the second dropdown.

Am I missing something obvious or is it not possible to populate one dropdown based on the selection made in another without re-creating the controls?

Thanks for any help

For i = 0 To 20
For j = 0 To 19
allcomparray(i, j) = Sheets("Data").Cells(Range("Components_array").Row + i, _
Range("Components_array").Column + j).Text
comparray(j) = allcomparray(0, j)
Next j
Next i

If cddtparambarcomp.Text = compseltext Then
ActiveCell = compseltext
GoTo CompSelNoChange
Else: ActiveCell = cddtparambarcomp.Text
End If

compseltext = cddtparambarcomp.Text
compselindex = cddtparambarcomp.ListIndex

CompSelNoChange:
For i = 1 To 20
subcomparray(i) = allcomparray(i, compselindex - 1)
Next i

Set cddtparambarsubcomp = CommandBars("Detailed Table Parameter Menu").Controls(4)
With cddtparambarsubcomp
For i = 1 To 20
.AddItem subcomparray(i)
Next i
.Visible = True
End With