更改一系列ActiveXcombobox的属性

我有一个有两列ActiveXcombobox的工作表。 我希望能够单独更新列,但一直没有find一个干净的方式来做到这一点。

这是我现在使用的:

Sub UpdateNames() Dim TotalCount As Integer Dim VariableText As String TotalCount = Worksheets("Variables").Range("C1") VariableText = "Variables!$B$1:$B$" & TotalCount ActiveSheet.Shapes("ComboBox1").OLEFormat.Object.ListFillRange = VariableText ActiveSheet.Shapes("ComboBox2").OLEFormat.Object.ListFillRange = VariableText ActiveSheet.Shapes("ComboBox3").OLEFormat.Object.ListFillRange = VariableText ActiveSheet.Shapes("ComboBox4").OLEFormat.Object.ListFillRange = VariableText 

等等

C1只包含一个数字。 这种方法的作品,但真的很烂。 我想要的是一行代码,而不是每个combobox的一堆行。 例如:

 ActiveSheet.Shapes("ComboBoxX").OLEFormat.Object.ListFillRange = VariableText 

这应该是超级简单的,我觉得不得不问。 我读了一个数组可以工作,但我似乎无法弄清楚如何让它的工作。 我也想能够在名为“名单”的另一张表上使用这个macros。 这个代码会工作吗?

 Roster.Shapes("ComboBox1").OLEFormat.Object.ListFillRange = VariableText 

 For i = 1 To ActiveSheet.Shapes.Count ActiveSheet.Shapes("ComboBox" & i).OLEFormat.Object.ListFillRange = _ VariableText Next i 

进一步给你的评论:

如果只想将框从1更改为3,则修改For i = 1 To 3