Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1448to1452
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
Inhaltsverzeichnis

Combobox mit Unikaten und alphabetisch sortiert

Combobox mit Unikaten und alphabetisch sortiert
24.09.2015 15:40:33
Tom
Hallo,
ich habe in einer UserForm die Combobox1 und möchte diese mit Werten aus Spalten füllen, genauer gesagt Unikate und alphabetisch sortiert. Mit welcher Spalte die ComboBox gefüllt wird, hängt davon ab, welcher Radiobutton ausgewählt wurde (insgesamt gibt es 5; RadioButton1 --> Spalte 1/Spalte A, RadioButton2 --> Spalte 2/Spalte B etc.)
Mein Code sieht folgendermaßen aus (für 2 Radiobuttons):
'Radiobutton 1 -> SpaltenZahl muss 1 sein / Spalte A
Sub OptionButton1_Click()
SpaltenZahl = 1
Dim lngLetzte As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), _
Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
If OptionButton1 Then
Dim BoI As Byte
ComboBox1.Clear
With Worksheets("Tabelle1")
For BoI = 2 To lngLetzte
ComboBox1.AddItem .Cells(BoI, SpaltenZahl) 'anstelle SpaltenZahl stand vorher  _
hier 1
Next BoI
End With
End If
UserForm_Initialize
ComboBox1.ListIndex = 0
End Sub

'Radiobutton 2 -> SapltenZahl muss 2 sein / Spalte B
Sub OptionButton2_Click()
SpaltenZahl = 2
Dim lngLetzte As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), _
Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
If OptionButton2 Then
Dim BoI As Byte
ComboBox1.Clear
With Worksheets("Tabelle1")
For BoI = 2 To lngLetzte
ComboBox1.AddItem .Cells(BoI, SpaltenZahl) 'anstelle SpaltenZahl stand vorher 2
Next BoI
End With
End If
UserForm_Initialize
ComboBox1.ListIndex = 0
End Sub

'Combobox ohne Duplikate füllen
Public Sub UserForm_Initialize()
Dim objDic As Object
Dim lngZ As Long
Set objDic = CreateObject("Scripting.Dictionary")
For lngZ = 2 To Cells(Rows.Count, 1).End(xlUp).Row
objDic(Cells(lngZ, 1).Value) = 0
Next
ComboBox1.List = objDic.keys
EintraegeComboboxSortieren
End Sub

'Einträge der Combobox1 alphabetisch sortieren
Sub EintraegeComboboxSortieren()
Dim i_Erster As Integer
Dim i_Letzter As Integer
Dim i_Aktuell As Integer
Dim i_Nächster As Integer
Dim s_buffer As String
With UserForm1.ComboBox1
If .ListCount = 0 Then Exit Sub
i_Erster = 0
i_Letzter = .ListCount - 1
For i_Aktuell = i_Erster To i_Letzter
For i_Nächster = i_Aktuell + 1 To i_Letzter
If .List(i_Aktuell) > .List(i_Nächster) Then
s_buffer = .List(i_Nächster)
.List(i_Nächster) = .List(i_Aktuell)
.List(i_Aktuell) = s_buffer
End If
Next i_Nächster
Next i_Aktuell
End With
End Sub

In den Prozeduren Sub OptionButton1_Click() bzw. Sub OptionButton2_Click() habe ich bereits die Konstante "SpaltenZahl" deklariert und an den entsprechenden Stellen eingetragen.
Meine Frage ist nun, wie ich den Wert der Konstante (abhängig vom ausgewählten Radiobutton -> hier 1 oder 2) mit in die Prozedur "UserForm_Initialize" übernehmen kann.
Über Tipps und Verbesserungsvorschläge würde ich mich freuen :-)
Viele Grüße
Tom

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox mit Unikaten und alphabetisch sortiert
24.09.2015 15:51:07
Rudi
Hallo,
ich würde anstatt der Optionbuttons eine Listbox nehmen. ListStyle= fmListStyleOption. Dann brauchst du anstatt 5 Prozeduren nur noch eine. Als Spaltenzahl Listbox.Listindex+1.
Gruß
Rudi

AW: Combobox mit Unikaten und alphabetisch sortiert
24.09.2015 15:51:41
Daniel
HI
Zellinhalt in eine freie Spalte kopieren
diese Spalte sortieren
in dieser Spalte Duplikate entfernen
Werte aus der Spalte in die Combobox übernehmen.
Spalte leeren
bzw wenn du statt der Radio-Buttons eine List- oder Combobox nimmmst, wird die Programmierung noch einfacher, weil du dann nur ein Makro brauchst und nicht eines für jeden Button.
gruß Daniel

Anzeige
AW: Combobox mit Unikaten und alphabetisch sortiert
24.09.2015 16:54:54
Luschi
Hallo Tom,
dafür wird vom DOT.Net-Framework für Windows das Objekt
CreateObject("System.Collections.SortedList") bereitgestellt und besitzt folgende Kriterien:
- es werden nur Unikate aufgenommen
- die aufgenommenen Einträge werden automatisch sortiert
- Übergabe der Einträge an ein normales Array
- welches dann die Werte für die Combobox bilden
Wenn du ein kleines Beispiel hier hochladest, zeige ich dir, wie das geht.
Gruß von Luschi
aus klein-Paris

AW: Combobox mit Unikaten und alphabetisch sortiert
28.09.2015 15:58:05
Tom
Hallo zusammen,
vielen Dank für eure Tipps!
Hier eine kleine Beispieldatei: https://www.herber.de/bbs/user/100448.xlsm
Grüße
Tom
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige