2016-06-18 4 views
1

で名前付き範囲Iは、ユーザーフォームで使用されるコンボボックス、値集合ソースとしてのその使用名前付き範囲を有しています。場合行

すべての私の名前付き範囲をVBAでSelection.CreateNamesのExcelでCreate names from selectionsから製造されました。ここで

コードです:ここでは

Private Sub UserForm_Initialize() 

Dim row As Integer 'In the example, row = 1, but in real life I'll want to create many named ranges from items listed as rows. 
Dim lastCol As Integer 'Needed because my named ranges will vary in length 
Dim ws As Worksheet 'Where my data is 

Set ws = Worksheets("tests") 

row = 1 
lastCol = ws.Cells(row, Columns.Count).End(xlToLeft).Column 

ws.Range(Cells(row, 1), Cells(row, lastCol)).Select 

'Create the named range 
Selection.CreateNames Left:=True 

'Assign the named range (via its name, found in column 1) to the ComboBox RowSource 
ComboBoxSampleForSO.RowSource = ws.Cells(row, 1).Value 

End Sub 

は私のシート内の項目「テスト」 enter image description here

Name managerているすべての私の名前は(すなわち、これらのすべてのリストが正しいの要素)を正しいと言われます:

enter image description here

問題:最初の要素だけがdisplayeありますdをComboBoxに追加します。

この問題はときに発生しません:

  • 名前付き範囲は列ではなく行のデータから作成された
  • 私が直接(Data validationを使用して)私のワークシートのドロップダウンリストを作成します。

私はこの問題を解決することはできますか?

+0

はあなたの例の行と(レンジでコンボボックスをロードするためとVBA)Selection.CreateNamesを呼び出すためにVBAを使用するために使用されるコード – dbmitch

+0

は、ユーザーフォーム上のコンボボックスであることを示しますか? – dbmitch

+0

'Combobox.List'プロパティを見てください。 –

答えて

1

あなたがExcelの機能に遭遇しました表示されます。

これを行うための唯一の方法は、VBAである - コンボボックスは、ユーザーフォーム上でなければ動作しないことであっても、リストのAddItemメソッド

で値集合ソースを更新 - のいずれかのワークシートをアクティブ機能やボタンで。

' Substitute your range name here 
Const HORIZ_RANGE As String = "Row1Range" 

Dim varListVals As Variant 
Dim intItem As Integer 

' Returns two dimension array from your range of cells 
varListVals = Application.Range(HORIZ_RANGE).Cells 

ComboBox1.Clear 

For intItem = LBound(varListVals, 2) To UBound(varListVals, 2) 
    ComboBox1.AddItem varListVals(1, intItem) 
Next intItem 
+0

良いヒントをthe.Listする範囲を割り当てることができます。私の列をループして、Me.ComboBoxSampleForSO.AddItem ws.Cells(row、col).Valueを使用すると動作します。より良い、私の名前付き範囲の項目をループする(名前に各項目の(ws.Cells(行、1).Valueの).RefersToRange)私に期待される動作を提供します。あなたの答えを書いてもらえれば喜んで回答を受け入れますが、もしあなたがむしろ完全な答えを書くつもりです。 – MPa

+0

ComboBox1でuserformを使用している場合、コードは機能します。配列の最初の次元をとり、AddItemを使用してコンボボックスをロードする – dbmitch

関連する問題