我有一张包含两列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
答案 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