字符串数组的Excel VBA编译错误

时间:2017-03-03 14:10:19

标签: excel vba combobox

我在Excel中遇到VBA问题。我的目标是拥有一个包含多个组合框的Userform,其中包含从Excel图表中提取的所有相同内容。 我用了命令

  

ComboBox.Rowsource =“A1:A10”

对于我在用户表单中使用的每个组合框。然后我意识到这是很多代码,因为我再次为每个盒子写了这个命令。所以我尝试使用字符串数组,让我们称之为“A”,内容为“Combobox1”和“Combobox2”等等。 但是当我试图在代码中使用它时 -

  

对于i = 1到10

     

A(i-1).rowsource =“A1:A10”

     

  • 我收到警告:编译错误:Invalide限定符

我的错误是什么?

非常感谢任何帮助,D.K。

2 个答案:

答案 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