Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
516to520
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
516to520
516to520
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

UserForm: ComboBox-Inhalte alphabetisch sortieren

UserForm: ComboBox-Inhalte alphabetisch sortieren
16.11.2004 19:35:24
Martin
Hallo,
ich habe ein kleines Problem: Ich habe in einer UserForm einer Combobox über RowSource etwa 2000 Einträge zugewiesen. Diese Inhalte sind (wie im Tabellenblatt) nicht sortiert und können sich mehrfach wiederholen.
Meine Frage: Ist es möglich die Combobox-Inhalte alphabetisch zu sortieren und vielleicht sogar die doppelten Einträge zu entfernen?
Habe das Sortieren schon mit folgendem Makro aus dem Archiv probiert, ging aber leider nicht:

Private Sub UserForm_Activate()
ComboBox3.RowSource = "c1:c2000"
Dim iLast As Integer, iNext As Integer
Dim iTmp As Integer
With UserForm1.ComboBox3
For iLast = 0 To .ListCount - 1
For iNext = iLast + 1 To .ListCount - 1
If .List(iLast) > .List(iNext) Then
iTmp = .List(iLast)
.List(iLast) = .List(iNext)
.List(iNext) = iTmp
End If
Next iNext
Next iLast
End With
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm: ComboBox-Inhalte alphabetisch sortie
16.11.2004 19:43:05
Josef
Hallo Martin!
Wenn du eine ComboBox über .RowSource füllst, kannst du
die Liste nicht sortieren!
Am einfachsten und schnellsten wäre es die Daten in der Tabelle zu
sortieren und zu filtern und diese daten dan der ComboBox zuzuweisen.
Das kann man auch per Makro machen!
Gruß Sepp
Geht ich leider nicht
16.11.2004 20:12:38
Martin
Hallo,
vielen Dank für die Antwort! Leider kann ich die Daten nicht sortieren, da die Daten bereits nach einem anderen Kriterium sortiert sind und eine andere ListBox und eine andere ComboBox schon darauf zugreifen!
Geht leider nicht
16.11.2004 20:13:05
Martin
Hallo,
vielen Dank für die Antwort! Leider kann ich die Daten nicht sortieren, da die Daten bereits nach einem anderen Kriterium sortiert sind und eine andere ListBox und eine andere ComboBox schon darauf zugreifen!
Anzeige
AW: Geht leider nicht
16.11.2004 20:16:51
Josef
Hallo Martin
Geht schon!
Man braucht die Daten ja nicht im Original-Sheet zu sortieren und zu filtern.
Probier mal das.

Private Sub UserForm_Initialize()
Dim wksTemp As Worksheet
Dim myList As Variant
Dim lEnd As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
ActiveSheet.Range("C:C").Copy
Set wksTemp = Worksheets.Add
With wksTemp
.Paste
.Columns("A:A").Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
.Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range( _
"B1"), Unique:=True
myList = .Range("B1:B" & .Range("B65536").End(xlUp).Row)
.Delete
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
End With
ComboBox1.List = myList
ComboBox1.ListIndex = 0
End Sub

Gruß Sepp
Anzeige
AW: UserForm: ComboBox-Inhalte alphabetisch sortie
EtoPHG
Hallo Martin,
Die folgende Subroutine füllt eine Combobox sortiert (mit String Gross- und kleischreibung sowie Zahlen) ab. Du musst nur die ixCol, ixRowS und ixRowE Variablen gemäss Deinem Bereich aus dem Tabellenblatt richtig setzen.

Private Sub UserForm_Initialize()
Dim ixCol As Integer
Dim ixRow As Long
Dim ixRowS As Long
Dim ixRowE As Long
Dim ixList As Integer
ixList = 0
ixCol = 3                 ' Column of ListRange (e.g. C = 3)
ixRowS = 2                ' RowStart of ListRange
ixRowE = 2000             ' RowEnd of ListRange
ComboBox3.Clear
ComboBox3.AddItem ActiveSheet.Cells(ixRowS, ixCol).Value
For ixRow = ixRowS + 1 To ixRowE
If Not IsEmpty(ActiveSheet.Cells(ixRow, ixCol).Value) Then
For ixList = 0 To ComboBox3.ListCount - 1
If UCase(ComboBox3.List(ixList)) = UCase(ActiveSheet.Cells(ixRow, ixCol).Value) Then Exit For
If UCase(ComboBox3.List(ixList)) > UCase(ActiveSheet.Cells(ixRow, ixCol).Value) Then
ComboBox3.AddItem ActiveSheet.Cells(ixRow, ixCol).Value, ixList
Exit For
End If
Next ixList
If ixList = ComboBox3.ListCount Then
If UCase(ComboBox3.List(ixList - 1)) < UCase(ActiveSheet.Cells(ixRow, ixCol).Value) Then ComboBox3.AddItem ActiveSheet.Cells(ixRow, ixCol).Value
End If
End If
Next ixRow
End Sub

Gruss Hansueli
Anzeige

10 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige