我在Excel中遇到VBA问题。我的目标是拥有一个包含多个组合框的Userform,其中包含从Excel图表中提取的所有相同内容。 我用了命令
ComboBox.Rowsource =“A1:A10”
对于我在用户表单中使用的每个组合框。然后我意识到这是很多代码,因为我再次为每个盒子写了这个命令。所以我尝试使用字符串数组,让我们称之为“A”,内容为“Combobox1”和“Combobox2”等等。 但是当我试图在代码中使用它时 -
对于i = 1到10
A(i-1).rowsource =“A1:A10”
下
我的错误是什么?
非常感谢任何帮助,D.K。
答案 0 :(得分:0)
您可以使用List
的{{1}}属性为您的组合框填充范围(列)中的值:
ComboBox
要使用ComboBox.List = Range("A1:A10").Value
数组中的值填充ComboBox
,您可以使用以下代码:
A
要使用Dim A() As Variant
A = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) '<-- populate array (for example)
ComboBox.List = A '<-- populate combo-box with array values
中的值填充A
数组,稍后再填充Range
数组中的ComboBox
,请使用以下代码:
A
答案 1 :(得分:0)
您可以使用string array
来存储表单的组合框,而不是VBA.Collection
。这可能比array
更容易。
Dim i As Integer
Dim A As Collection
Set A = New VBA.Collection
' One way of adding specific comboboxes to the collection
A.Add Me.ComboBox1, Me.ComboBox1.Name
A.Add Me.ComboBox2, Me.ComboBox2.Name
A.Add Me.ComboBox3, Me.ComboBox3.Name
' and so on for all combo boxes on the form
Set A = New VBA.Collection
' Another way would be to loop through the controls and filter the comboboxes out
Dim c As MSForms.control
For Each c In Me.Controls
If TypeName(c) = "ComboBox" Then
A.Add c, c.Name
End If
Next c
For i = 1 To A.Count
A(i).RowSource = "A1:A10"
Next