eine ComboBox hat standardmäßig 10 Spalten. Ist es möglich diese Spaltenanzahl einfach auf eine _ Spalte zu festzulegen? Mit einem kleinen Trick ist es mir bereits gelungen, aber es gibt doch bestimmt eine bessere Lösung.
Private Sub UserForm_Initialize()
Dim i As Integer
With ComboBox1
'Standardmäßig 10 Spalten
For i = 1 To 50
.AddItem "Eintrag " & i
Next
Debug.Print "ComboBox-Spalten: " & UBound(.List, 2) + 1
.Clear
'Über Array-Zuweisung nur noch eine Spalte
.List = Array("Eintrag 1")
For i = 2 To 50
.AddItem "Eintrag " & i
Next
Debug.Print "ComboBox-Spalten: " & UBound(.List, 2) + 1
End With
End Sub
Hintergrund meiner Frage:
Im Buch "Excel-VBA (Einstieg für Anspruchsvolle)" von Michael Schwimmer steht:
"Schleifen mit der For Each...Next-Anweisung sind extra dafür gemacht, nacheinander alle Elemente einer Auflistung oder eines Datenfelds zurückzugeben. [...] Wollen Sie alle Elemente einer Auflistung durchlaufen, wenden Sie am besten die Schleife For Each...Next an. Das ist schneller, als die einzelnen Elemente über Index anzusprechen."
In dem Buch zudem, dass das Durchlaufen mit der For Each...Next-Anweisung um bis zu 40 Prozent schneller sei, als jedes einzelne Element per Index anzusprechen.
Wenn ich nun die For Each...Next-Anweisung anstelle der Index-Abfrage auf eine ComboBox anwende, würde (aufgrund der 10 Spalten) die 10-fache Anzahl an Durchläufen erfolgen. Das möchte ich mit der Reduzierung auf eine ComboBox-Spalte gerne vermeiden.
Viele Grüße
Martin