Hallo zusammen,
bin noch ein ziemlicher Frischling mit VBA. Ich hab ein Problem mit meiner Userform.
Ich habe eine Combobox und diese greift gerade auf eine Range eines anderen Tabellenblattes zu um die entsprechenden values aus dieser Range zu bekommen.
Da die Range auch leere values hat hab ich folgenden Code, um nur values in die comboboxlist aufzunehmen die nicht leer sind:
1 2 3 4 5 6 7 8 9 10 11 12 | Dim cell
For Each cell In Worksheets( "Vergabe nach VE" ).Range( "E7:E400" ).SpecialCells(xlConstants)
myArray(x) = cell.Value
x = x + 1
Next cell
Der Code funktioniert auch. Jedoch ist meine Liste nicht damit nicht alphabetsich geordnet.
Dazu habe ich einen BubbleSort Algorythmus.
|
1 | Dim i As Long , j As Long , v As Variant
|
Dim tmp As Variant
v = Worksheets("Vergabe nach VE").Range("E7:E400").Value
For i = 1 To UBound(v, 1) - 1
For j = i + 1 To UBound(v, 1)
If v(i, 1) > v(j, 1) And v(j, 1) <> "" Then
tmp = v(i, 1)
v(i, 1) = v(j, 1)
v(j, 1) = tmp
End If
Next
Next
ComboBox1.List = v
Dieser funktioniert einzeln auch. Jedoch nimmt er auch leere Zellen und ordnet Sie somit ganz oben ein womit eine viel zu große Liste in der Combobox entsteht.
Meine Idee ist, dass ich die vorher ausgesuchten NICHT leeren values in einem array speicher und dann den Bubblesort drüber laufen lasse. also v = array()
Allerdings krieg ich das nicht hin...
Erstmal ist die Idee richtig und/oder gibt es noch eine andere Möglichkeit bzw. wie komme ich zum Ziel? =)
LG
|