2017-03-03 10 views
0

ExcelでVBAに問題があります。私の目標は、複数のコンボボックスを持つUserformをすべて同じコンテンツとともにExcelチャートから抽出することでした。 私は私が私のユーザーフォームに持っていたすべてのコンボボックス用Excel VBAコンパイルエラー:文字列配列

ComboBox.Rowsource = "A1:A10"

そして、そのコマンドを使用していました。私はそれが多くのコードであることに気付きました。なぜなら、私はすべてのボックスに対してこのコマンドを書きました。だから、私は文字列配列を使用しようとしました、それは "コンボボックス1"と "コンボボックス2"というように、 "A"と呼ぶことができます。 しかし、私は、コード内でこれを使用しようとしたとき -

for i = 1 to 10

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

next

  • 私は警告だ:コンパイルエラー:Invalide予選

私のミスで何を?

多くのご協力をいただき、ありがとうございました。

+0

なぜコンパイルエラーが発生するのかを知るには、完全なコードを確認する必要があります。 – dee

答えて

0

あなたが範囲(列)の値を使用してコンボボックスを埋めるためにComboBoxListプロパティを使用することができます。

ComboBox.List = Range("A1:A10").Value 

A配列の値でComboBoxを移入するには、コードを使用することができます

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アレイを移入する:以下0、そして後に、そのA配列からごComboBoxを移入以下のコードを使用します。

Dim A() As Variant 

A = Application.Transpose(Range("A1:A10")) '<-- populate array from Range("A1:A10") 
ComboBox.List = A '<-- populate combo-box with array values 
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 
関連する問題