更改一系列ActiveX组合框的属性

时间:2014-04-23 18:43:01

标签: excel vba combobox

我有一张包含两列ActiveX ComboBoxes的工作表。我希望能够单独更新列,但却无法找到一种干净的方法。

以下是我现在正在使用的内容:

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只包含一个数字。这种方法有效,但真的很糟糕。我想要的是一行代码而不是每个组合框的一堆行。 e.g:

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

这必须非常简单,我觉得不得不提问。我读到一个阵列可以工作,但我似乎无法弄清楚如何让它工作。我也希望能够在名为“Roster”的另一张纸上使用这个宏。这段代码会起作用吗?

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

1 个答案:

答案 0 :(得分:1)

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

进一步发表评论:

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