如何将多个comboboxListFillRange更改为基于单元格值的命名范围?

我试图创build多个下拉列表,根据他们想要使用的列表进行更改。 例如,如果他们将控件单元更改为“List 1”,则所有combobox(ActiveX)将其列表填充范围更改为“= List 1”。 如果控制单元更改为“列表2”,则所有combobox将其列表填充范围更新为“=列表2”。 有一种方法可以用Data Validation来做到这一点,但是我需要能够键入的ComboBox函数,并且下拉列表将会改变,以便以键入的string开始显示列表中的项目。

我是一个完整的VBA初学者,所以我不完全理解与语言相比的细微差别。 我觉得我错过了很多正确的语法。 我已经把search的一些代码混合在一起,但没有一个匹配我正在寻找的东西,所以我试图以某种方式改变它。 我觉得我杀了很多。 我很抱歉啊哈

Dim i As Integer Private Sub ListChange() If Range("B4").Value = "Bonnie" Then For i = 1 To 182 ' 'Iterate from ComboBox1 to ComboBox182 to change ' listfillrange to 'Bonnie' named range Set cb = Sheet1.Shapes("ComboBox" & i).OLEFormat.Object.Object cb.ListFillRange = "=Bonnie" Next i ElseIf Range("B4").Value = "Christina" Then For i = 1 To 182 ' Iterate from ComboBox1 to ComboBox182 to change ' listfillrange to 'Christina' named range Set cb = Sheet1.Shapes("ComboBox" & i).OLEFormat.Object.Object cb.ListFillRange = "=Christina" Next i Else: For i = 1 To 182 ' Iterate from ComboBox1 to ComboBox182 to change ' listfillrange to 'Dianne' named range Set cb = Sheet1.Shapes("ComboBox" & i).OLEFormat.Object.Object ComboBox.ListFillRange = "=Dianne" Next i End If End Sub 

我还提到,我喜欢使用ActiveXcombobox,因为它们显示的下拉dynamic改变,因为你键入的string,但我只能够使combobox自动显示下拉

 Private Sub ComboBox1_Change() Me.ComboBox1.DropDown End Sub Private Sub ComboBox2_Change() Me.ComboBox2.DropDown End Sub 

有没有办法缩短这个或我不得不重复这个182combobox。

谢谢。