2016-12-20 3 views
1

Ich habe diesen Code:Dynamic Range und ein statisches Element auf eine ComboBox über VBA

With Sheet1.Shapes("comboBox1").ControlFormat 
    .ListFillRange = "namedRange" 
    .AddItem "1.Item" 
End With 

Aber danach, nur „1.Item“ ist in meinem Combo-Box und der Dynamikbereich erscheinen nicht auf allen .

Wie kann ich einItem und mein Range auf die Combo-Box?


EDIT

Die dynamischen range funktionieren würde, wenn ich .AddItem löschen:

With Sheet1.Shapes("comboBox1").ControlFormat 
    .ListFillRange = "namedRange" 
End With 

Meine Frage ist, ob es eine Möglichkeit gibt, die nicht in einem Bereich zu kombinieren, sondern voneinander getrennt.


Vielen Dank im Voraus für Ihre Antworten ...

+0

Warum nicht den zusätzlichen Artikel in Ihr Sortiment aufnehmen? –

+0

Das war auch meine Idee, aber ich möchte wissen, ob es für meinen ersten Versuch einen besseren Weg gibt. Und ich kann es nicht zu meinem aktuellen Angebot hinzufügen, weil ich diesen Bereich für mehr als nur diese Combo-Box verwende. Also muss ich einen neuen Bereich erstellen ... und das wäre (irgendwie) nutzlos ... – holyFackel

+0

@holyFackel ist deine ComboBox ein 'User_Form' Typ? oder 'ActiveX'? –

Antwort

2

Wenn ich Ihren Beitrag richtig verstanden, Sie einen anderen Artikel zur Bestellung im „Namedrange“ hinzufügen möchten, und alle zeigen diese Elemente in Ihrem Arbeitsblatt ComboBox (das ist eigentlich ein Dropdown in Ihrem Arbeitsblatt).

(ändern Sie "Sheet2" in den Namen Ihres Blattes).

Sub PopulateCombo_fromArray() 

Dim ComboArray As Variant 

'clear Combo-Box from previous runs >> modify "Sheet2" to your sheet's name 
Worksheets("Sheet2").Shapes("ComboBox1").ControlFormat.RemoveAllItems 

' reading the NamedRange into a 1-dimension array 
ComboArray = Application.Transpose(Range("namedRange").Value) 

ReDim Preserve ComboArray(UBound(ComboArray)) 
' add another element to the array (outside the "namedRange") 
ComboArray(UBound(ComboArray)) = "1.Item" 

' populate "ComboBox1" with array 
Worksheets("Sheet2").Shapes("comboBox1").ControlFormat.List = ComboArray 

End Sub 
+0

Wie kann ich das "1.Item" zu ListIndex ** 1 ** machen? – holyFackel

+0

@holyFackel was meinst du? Was willst du mit dem "1.Item" machen? –

1

Müssen Sie "Shapes" verwenden?

wenn nicht, können Sie eine Combobox mit einem benannten Bereich wie folgt füllen:

With Sheet1.ComboBox1 
    .List = Application.Transpose(Range("namedRange")) 
    .AddItem "1.Item" 
End With 
+0

Ja, den Bereich in ein variantes Array zu graben ist der erste Schritt, dann das Array für ein zusätzliches Element neu zu dimensionieren, mit dem zusätzlichen Element aufzufüllen und als Listenquelle zu verwenden. –