2016-08-30 8 views
0

これは愚かな質問として出てくるが、私はどこでも答えを見つけることができません謝罪、マルチコラムのコンボボックスを作成するだけで101の方法。複数の範囲に1列のコンボボックスを設定する

コンボボックスの1つのリストに結合する3つの名前付き範囲があります。

私は、以前のユーザーの選択に応じてこれらの3つの範囲のうちの1つに変更するコンボボックスを持つ別のユーザーフォームがあるため、これらの範囲を1つの列/範囲に単純に結合したくありません。

これらの名前付き範囲のそれぞれのデータを含む1つの長いリストが必要です(私にとっては明らかにそうではありません)。私は任意の方向を事前に= namedrange1 & namedrange2 & namedrange3

おかげで私のリストを取得する方法が必要

combobox1.list = Range("NamedRange1").Value 

私の他のコンボボックスをユーザーフォームに設定されているのに対し、のようなものを初期化します。

+0

は、以下の私の答えのコードを試してみてください –

答えて

2

は(あなたのUserForm_ActivateまたはUserForm_Initializeイベントで)以下のコードを試してみてください。

Private Sub UserForm_Activate() 

Dim UnionRange   As Range 
Dim cell    As Range 

' use Union to merge as many named ranges you need 
Set UnionRange = Union(Range("NamedRange1"), Range("NamedRange2"), Range("NamedRange3")) 

Me.ComboBox1.Clear 

For Each cell In UnionRange 
    ComboBox1.AddItem cell.Value 
Next cell 
ComboBox1.ListIndex = 0 

End Sub 
+0

素晴らしい感謝!起動時にコンボボックスが空白になるためには、インデックスを-1に設定しなければならなかったので、私の質問は削除されました。 – Awill

+0

あなたが歓迎です –

1

私が知る限り、名前付き範囲を.listまたは.rowsourceプロパティに連結することはできません。 代わりにあなたの範囲をループし、その値を追加することができます。

Dim rCell As Range 

For Each rCell In Worksheets("YourSheet").Range("namedrange1") 

    ComboBox1.AddItem rCell.Value 

Next rCell 

For Each rCell In Worksheets("YourSheet").Range("namedrange2") 

    ComboBox1.AddItem rCell.Value 

Next rCell 
.... 
関連する問題