2014-04-23 23 views
1

我有一個包含兩列ActiveX組合框的工作表。我希望能夠單獨更新列,但一直沒有找到一個乾淨的方式來做到這一點。更改一系列ActiveX組合框的屬性

這是我現在使用什麼:

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只包含一個數字。這種方法可行,但真的很糟糕。我想要的是一行代碼,而不是每個組合框的一堆行。例如:

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

這必須是超級簡單,我覺得不得不問。我讀過一個數組可以工作,但我似乎無法弄清楚如何讓它工作。我也希望能夠在名爲「名冊」的另一張紙上使用這個宏。這個代碼能工作嗎?

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

回答

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

+0

快速的問題。這會改變ActiveSheet上的每個組合框嗎?我將如何阻止它在一個特定的數字?我有兩列組合框,我只想更新其中的一個。 – user3494277

+0

@ user3494277請參閱更新 –

+1

謝謝,這工作! – user3494277