Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1264to1268
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Strings in Combobox sortieren
Pascal
Guten Tag miteinander
Hier im Forum (und auch anderswo im Web) wurde bereits schon einiges über die Sortierung von Strings in Comboboxen geschrieben.
Doch leider wurde ich mit den gesammelten Vorschlägen bei meinem Problem nicht schlauer.
Mein Problem:
Auf einer UserForm hab ich u.a. eine Combobox
in diese lese ich ab einer Excel-Datei diverse Werte ein über ComboBox2.AddItem Cells(i, 1)
Nun mein Problem:
Die Werte werden zwar korrekt in die Combobox übertragen, allerdings dort dann nicht alphabetisch sortiert.
Leider darf ich meine Werte nicht direkt in Excel vor-sortieren, da diese Werte in Excel in einer bestimmten Reihenfolge stehen müssen.
Gibt es eine Einfache Möglichkeit, nachdem alle Werte in die Combobox geladen wurden (alles nur Strings) diese in der Combobox noch alphabetisch zu sortieren ?
Herzlichen Dank für Eure Tips !

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Strings in Combobox sortieren
11.06.2012 11:53:58
Rudi
Hallo,
lies die Werte erst in ein Array ein und sortiere das.
Schema:
Private Sub UserForm_Activate()
Dim i, j, arrList(1 To 10), tmp
ComboBox1.Clear
For i = 1 To 10
arrList(i) = Sheets(1).Cells(i, 1)
Next
For i = 1 To 9
For j = i + 1 To 10
If arrList(i) > arrList(j) Then
tmp = arrList(i)
arrList(i) = arrList(j)
arrList(j) = tmp
End If
Next
Next
ComboBox1.List = arrList
End Sub

Gruß
Rudi
AW: Strings in Combobox sortieren
11.06.2012 13:14:55
Pascal
Hallo Rudi
vielen herzlichen Dank für Deinen Lösungs-Ansatz ! doch .... wie genau müsste ich das mit dem Array nun in meinen Code einflechten ?
meine derzeitige Code-Stelle lautet wie folgt:
Application.EnableEvents = False
ComboBox2.Clear
aRow = [a65536].End(xlUp).Row
For i = 2 To aRow
If Cells(i, 1) "" Then
ComboBox2.AddItem Cells(i, 1) 'es werden nun alle nichtleeren Zeilen eingelesen
End If
Next i
Application.EnableEvents = True
zwar verstehe ich Deinen Lösungsansatz, allerdings bin ich wirklich etwas zu überfordert den in meinen obigen Code zu implementieren.
Aber vielleicht kannst Du mir dabei ja helfen ?
Gruss und danke schon mal herzlich
Pascal
Anzeige
AW: Strings in Combobox sortieren
11.06.2012 16:32:42
Rudi
Hallo,
Sub aaa()
Dim arr(), aRow As Long, i As Long, j As Long, n As Long, tmp
ComboBox2.Clear
aRow = [a65536].End(xlUp).Row
ReDim arr(1 To Application.CountA(Range(Cells(2, 1), Cells(aRow, 1))) - 1)
For i = 2 To aRow
If Cells(i, 1)  "" Then
n = n + 1
arr(n) = Cells(i, 1)
End If
Next i
For i = 1 To n - 1
For j = i + 1 To n
If arr(i) > arr(j) Then
tmp = arr(j)
arr(j) = arr(i)
arr(i) = tmp
End If
Next j
Next i
ComboBox2.List = arr
End Sub

Gruß
Rudi
AW: Strings in Combobox sortieren
11.06.2012 16:47:43
Pascal
Hallo Rudi
Vielen herzlichen Dank für Deine Superhilfe, resp. den angepassten Code. Wieder kann ich daraus eine Menge lernen.
doch leider läuft der angepasste Code nicht, sondern erzeugt die Fehlermeldung:
Index liegt ausserhalb des gültigen Bereichs
... und bleibt bei der Zeile hier stehen:
arr(n) = Cells(i, 1)
In der Datentabelle aus welcher ich ja die Werte einlesen will hab ich in der Spalte A total 18 Datensätze.
diese werden auch schön der Reihe nach mit Deiner Schlaufe durchlaufen und ins Array geladen.
Doch kaum ist der letzte Datensatz eingelesen, so bricht das Ganze mit der FM "Index liegt ausserhalb des gültigen Bereichs" ab und bleibt stehen bei der obigen Zeile.
Was könnte das sein ?
Muss ich irgendwie noch abfangen, wenn die Schlaufe verlassen werden soll ?
Anzeige
AW: Strings in Combobox sortieren
11.06.2012 22:03:53
Rudi
Hallo,
lad mal die Datei hoch-
Gruß
Rudi
AW: Strings in Combobox sortieren
12.06.2012 08:58:29
Pascal
Guten Tag Rudi
Danke für Deine Hilfes-Bemühungen. Natürlich würde ich ja gerne das File hochladen. Geht aber leider nicht, da hier sehr vertrauliche Daten drin sind.
Ich versuche aber krampfhaft die Ursache zu ermitteln, weshalb dein neuer Code immer exakt bei der Zeile
arr(n) = Cells(i, 1)
stehen bleibt (Fehlermeldung: Index ausserhalb des gültigen Bereichs)
Ich vermute den Fehler wie folgt:
mittels
aRow = [a65536].End(xlUp).Row
ermitteln wir ja die letzte gefüllte Zeile - das ist bei mir die Zeile 168
Aber....
meine Tabelle ist so aufgebaut:
in Spalte A steht jeweils eine Überschrift (die gilt es einzulesen in die Combobox2)
darunter sind jeweils 9 Leerzellen, ehe wieder eine Überschrift steht in Spalte A
die Spalten B - H der Tabelle umschreiben dann immer im Detail den Begriff aus Spalte A
Also ... wir müssten nur die Spalte A auslesen und nur die Zellen welche nicht leer sind.
Diese 18 Begriffe würden dann ins Array geschrieben werden müssen. (um dort dann sortiert werden zu können)
weisst Du wie ich meine ?
Grüsse: Pascal
Anzeige
AW: Strings in Combobox sortieren
12.06.2012 09:11:40
Rudi
Hallo,
dann ersetz mal
ReDim arr(1 To Application.CountA(Range(Cells(2, 1), Cells(aRow, 1))) - 1)
durch
ReDim arr(1 To Application.CountA(Columns(1)))
da hier sehr vertrauliche Daten drin sind.
Die kann man auch durch Dummies ersetzen.
Gruß
Rudi

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige