ich habe im Forum diesen Code gefunden. Im Original standen die Daten in Tabelle1 weiter rechts und tiefer. Ich möchte aber in A1 anfangen.
https://www.herber.de/bbs/user/62876.xls
Allerdings stoße ich da auf 2 Probleme:
1.Warum kann ich die Daten in der Tabelle nicht in der ersten Zeile eintragen? - > Fehlermeldung
2.Wie kann ich die sortierroutine andersrum sortieren lassen?
Dim Quelle, maxzl
Private Sub ComboBox2_Change()
For lngLief = 1 To maxzl
If Quelle.Cells(lngLief, "B") = Me.ComboBox1.Text And Quelle.Cells(lngLief, "A") = Me. _
ComboBox2.Text Then
Me.TextBox1 = Quelle.Cells(lngLief, "C")
Exit Sub
End If
Next
End Sub
Private Sub UserForm_Initialize()
Dim data()
Dim lngLief As Long
Set Quelle = Sheets("Tabelle1")
maxzl = Quelle.Range("B" & Rows.Count).End(xlUp).Row
For lngLief = 1 To maxzl
If Application.CountIf(Quelle.Range("B1:B" & lngLief), Cells(lngLief, "B")) = 1 Then
ReDim Preserve data(i)
data(i) = Quelle.Cells(lngLief, "B")
i = i + 1
End If
Next
ShellSort data()
Me.ComboBox1.List = data()
End Sub
Private Sub ComboBox1_DropButtonClick()
Dim lngLief As Long
Dim data()
Me.ComboBox2.Clear
For lngLief = 1 To maxzl
If Quelle.Cells(lngLief, "B") = Me.ComboBox1.Text Then
ReDim Preserve data(i)
data(i) = Quelle.Cells(lngLief, "A")
i = i + 1
End If
Next
ShellSort data()
For i = UBound(data()) To 0 Step -1
Me.ComboBox2.AddItem data(i)
Next
End Sub
Sub ShellSort(ByRef data() As Variant)
Dim OG&, i&, j&, k&, h As Variant
OG = UBound(data)
k = OG \ 2
While k > 0
For i = 0 To OG - k
j = i
While (j >= 0) And (data(j) > data(j + k))
h = data(j)
data(j) = data(j + k)
data(j + k) = h
If j > k Then
j = j - k
Else
j = 0
End If
Wend
Next i
k = k \ 2
Wend
End Sub