Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Combobox sortieren

Forumthread: Combobox sortieren

Combobox sortieren
07.02.2019 09:58:43
Kofler
Hallo!!! Kann mir bitte jemand sagen wie man die Combobox alphabetisch sortieren kann? Hier mein Code:
Private Sub ComboBox1_click()
Sheets(1).Unprotect
If ComboBox1.ListIndex = -1 Then
TextBox2.Text = ""
Else
Label12.Caption = ComboBox1.List(ComboBox1.ListIndex, 1)
Label13.Caption = ComboBox1.List(ComboBox1.ListIndex, 2)
Label14.Caption = ComboBox1.List(ComboBox1.ListIndex, 3)
Label15.Caption = ComboBox1.List(ComboBox1.ListIndex, 4)
Label16.Caption = ComboBox1.List(ComboBox1.ListIndex, 5)
Label17.Caption = ComboBox1.List(ComboBox1.ListIndex, 6)
Label18.Caption = ComboBox1.List(ComboBox1.ListIndex, 7)
Label19 = ComboBox1.List(ComboBox1.ListIndex, 9)
End If
TextBox1 = Format(TextBox1, "00000")
Sheets(1).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets(1).EnableSelection = xlUnlockedCells
End Sub

Private Sub CommandButton1_Click()
If ComboBox1 = "" Then
MsgBox "Bitte einen Teilnehmer auswählen!"
Exit Sub
End If
Dim x As Long
Z = Sheets(1).UsedRange.Rows.Count
x = Label19
temp = 0
For i = 2 To Z
If Cells(i, 1) = x Then
temp = 1
Exit For
End If
Next
If temp = 1 Then
Unload Me
zeile2 = i
UserForm9.Show
Else
MsgBox " unbekannter Fehler!"
End If
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub textbox1_keypress(ByVal keyAscii As MSForms.ReturnInteger)
Select Case keyAscii
Case 48 To 57
Case Else: keyAscii = 0
End Select
End Sub

Private Sub UserForm_activate()
Dim Zelle As Range
ComboBox1 = ""
zeille = Cells(Rows.Count, 2).End(xlUp).Row
For Each Zelle In Sheets(1).Range("B5:B" & zeille)
ComboBox1.AddItem Zelle.Value & " " & Zelle.Offset(0, 1).Value
ComboBox1.List(ComboBox1.ListCount - 1, 1) = Zelle.Offset(0, 2).Value
ComboBox1.List(ComboBox1.ListCount - 1, 2) = Zelle.Offset(0, 3).Value
ComboBox1.List(ComboBox1.ListCount - 1, 3) = Zelle.Offset(0, 4).Value
ComboBox1.List(ComboBox1.ListCount - 1, 4) = Zelle.Offset(0, 5).Value
ComboBox1.List(ComboBox1.ListCount - 1, 5) = Zelle.Offset(0, 6).Value
ComboBox1.List(ComboBox1.ListCount - 1, 6) = Zelle.Offset(0, 7).Value
ComboBox1.List(ComboBox1.ListCount - 1, 7) = Zelle.Offset(0, 8).Value
ComboBox1.List(ComboBox1.ListCount - 1, 8) = Zelle.Offset(0, 9).Value
ComboBox1.List(ComboBox1.ListCount - 1, 9) = Zelle.Offset(0, -1).Value
Next
End Sub

Vielen lieben Dank!
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Combobox sortieren
07.02.2019 10:05:24
Werner
Hallo Manuel,
sortier doch einfach in deinem Userform_activate bevor du die Daten in die Combobox einliest deine Tabelle alphabetisch, lese dann die Daten aus der sortierten Tabelle in die Combobox ein und danach nimmst du die Sortierung aus der Tabelle wieder raus.
Gruß Werner
Anzeige
AW: Combobox sortieren
07.02.2019 11:06:23
Kofler
Hallo!
Funktioniert, super Ansatz!
Danke dir!
Gerne u. Danke für die Rückmeldung. o.w.T.
07.02.2019 16:27:51
Werner
Danke für die Rückmeldung (mit Text)...
07.02.2019 17:46:06
Beverly
...- auf diesem Weg kann man auch seine Beitragsanzahl erhöhen und dadurch die Datenbank unnötig mit sinnfreien Beiträgen belasten.


Anzeige
Stattdessen Tabelle sortieren
07.02.2019 10:53:13
Beverly
Hi,
wenn du eine (zusätzliche) Spalte hast, in der die Daten eindeutig fortlaufend "nummeriert" sind, kannst du die komplette Tabelle zuerst alphabetisch nach deiner gewünschten Spalte sortieren und dann deine ComboBox füllen. Anschließend sortierst du die Tabelle wieder nach der Spalte mit der "Nummerierung". Anders ist m.W. eine Rücknahme der Sortierung nicht möglich.


Anzeige
AW: Stattdessen Tabelle sortieren
07.02.2019 11:07:24
Kofler
Passt! Habe ich verstanden! Danke dir!
AW: Combobox sortieren
07.02.2019 13:33:30
Daniel
Hi
mit .AddItem kann man nicht nur am Ende der Liste neue Werte einfügen, sondern auch an einer definierten Stelle der Liste, wenn du die Indexnummer als zweiten Parameter vorgibst.
die bereits vorhandenen Werte rücken dann nach hinten.
daher kannst du dir die sortierte Liste am einfachsten so erstellen, wenn du die neuen Werte nicht am Ende, sondern an der passenden Stelle einfügst:
dazu erstellst du eine zweite Schleife, um die richtige Position zu finden:
hier die Prüfung für die erste Spalte:
Private Sub UserForm_activate()
Dim Zelle As Range
Dim i as Long
ComboBox1 = ""
zeille = Cells(Rows.Count, 2).End(xlUp).Row
For Each Zelle In Sheets(1).Range("B5:B" & zeille)
For i = 0 to Combobox1.ListCount - 1
if Combobox1.List(i, 0) > Zelle.Value & " " & Zelle.Offset(0, 1).Value then Exit for
next
Combobox1.AddItem Zelle.Value & " " & Zelle.Offset(0, 1).Value, i
Combobox1.List(i, 1) = Zelle.Offset(0, 2).Value
Combobox1.List(i, 2) = Zelle.Offset(0, 3).Value
Next
End Sub
Gruß Daniel
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige