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