Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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
Inhalt ComboBox sortieren
Nico
Hallo zusammen,
ich möchte gern den Inhalt einer Combobox sortieren und habe zum befüllen selbiger diese Funktion. Die Funktion soll in Abhängigkeit vom Inhalt der ersten Combobox(cbb1) nun die Zweite(cbb2) füllen. Die Werte werden aus einer Tabelle geholt und in die Liste geschrieben, aber eben leider nicht sortiert. Geht das irgendwie, ohne das ich mit Arrays und ähnlichem arbeiten muss?
Private Sub cbb1_Change()
Dim hshC As Object
Dim i As Long
Set hshC = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Sheets("Tabelle1")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, 2) = Me.cbb1 Then
hshC(.Cells(i, 3).Text) = 0
End If
Next
Me.cbb2.List = hshC.Keys
End With
Set hshC = Nothing
End Sub
Vielen Dank.
MfG
Eddi

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
2 Möglichkeiten
26.05.2011 01:00:26
CitizenX
Hallo Eddi
1.Möglichkeit:
Private Sub cbb1_Change()
Dim i As Long
Dim objList As Object
Set objList = CreateObject("System.Collections.Arraylist")
With ThisWorkbook.Sheets("Tabelle1")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, 2) = Me.cbb1 Then
objList.Add .Cells(i, 3).Text
End If
Next
End With
objList.Sort
Me.cbb2.List = objList.toArray
Set objList = Nothing
End Sub

2.Möglichkeit:
Private Sub cbb1_Change()
Dim hshC As Object
Dim i As Long
Dim Out() As Variant
Set hshC = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Sheets("Tabelle1")
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, 2) = Me.cbb1 Then
hshC(.Cells(i, 3).Text) = 0
End If
Next
End With
Out = hshC.keys
QuickSort_Feld Out, 0, UBound(hshC.keys), False
Me.cbb2.List = Out
Set hshC = Nothing
End Sub

'Quelle http://www.online-excel.de/excel/singsel_vba.php?f=24
Private Sub QuickSort_Feld(DasFeld, StartUnten, EndeOben, Absteigend As Boolean)
QuickSort Standard
Dim iUnten As Long, iOben, iMitte, y
iUnten = StartUnten
iOben = EndeOben
iMitte = DasFeld((StartUnten + EndeOben) / 2)
While (iUnten  StartUnten)
iOben = iOben - 1
Wend
Else
While (DasFeld(iUnten) > iMitte And iUnten  DasFeld(iOben) And iOben > StartUnten)
iOben = iOben - 1
Wend
End If
If (iUnten 

Grüße
Steffen
Anzeige
AW: 2 Möglichkeiten
27.05.2011 13:29:03
Eddi
Vielen Dank für die beiden Möglichkeiten. Mich interessiert vor allem die Erste. Besteht bei der Variante noch die Möglichkeit, doppelte Einträge zu löschen? Das wäre echt super.
Vielen Dank.
Gruß, Eddi
3. Möglichkeit
26.05.2011 06:58:59
Oberschlumpf
Hi Nico
Schreib die Daten, die in Abhängigkeit von Combo1 in Combo2 stehen sollen, zuerst in eine freie Spalte einer Exceltabelle.
Nutze für die gewählte Spalte bis zur letzten, benutzten Zeile die Excel-Sortier-Funktion.
Schreib nun die sortierten Werte aus der Spalte in Combo2.
Lösch die zuvor benutzte Spalte.
Hilfts?
Ciao
Thorsten

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige