Guten Abend! Auf die schnelle und ohne Kommentare :-) der Code unten. In das Blatt 2 kopieren, dort soll A und B passieren oder !? Das ganze läuft dann als Ereignis. Du kannst also zwischendrin den Buchstaben ändern und der andere Beriech wird genutzt. Wenn ein andere Buchstabe genutzt wird, ändert sich an der Einstellung nix (es bleibt die alte Gütligkeit). VG und schönes Wochenende
Private Sub Worksheet_Change(ByVal Target As Range)
If Replace(Target.Address, "$", "") = "G3" Then
Dim gültigliste As String
Dim i As Long
Dim letzte As Long
Dim spalte As Long
If Target = "A" Then
spalte = 1
ElseIf Target = "B" Then
spalte = 5
Else
End
End If
With Sheets("Analysedaten")
gültigliste = ","
letzte = .Cells(Rows.Count, spalte).End(xlUp).Row
For i = 2 To letzte
If .Cells(i, spalte) <> "" And IsNumeric(.Cells(i, spalte)) Then
If InStr(1, gültigliste, "," & .Cells(i, spalte) & ",", vbTextCompare) = 0 Then gültigliste = gültigliste & CLng(.Cells(i, spalte)) & ","
End If
Next i
End With
If gültigliste <> "," Then
gültigliste = Mid(gültigliste, 2, Len(gültigliste) - 2)
gültigliste = BubbleSort(gültigliste)
With Sheets("Tabelle2").Range("G5").Validation
.Delete
.Add Type:=xlValidateList, Formula1:=gültigliste
End With
End If
End If
End Sub
Function BubbleSort(a As Variant)
Dim i As Long, n As Long, Temp As Long
Dim sortiert As Boolean
Dim test
test = Split(a, ",")
n = UBound(test)
Do
sortiert = True
For i = 0 To n - 1
If CLng(test(i)) > CLng(test(i + 1)) Then
Temp = CLng(test(i))
test(i) = CLng(test(i + 1))
test(i + 1) = Temp
sortiert = False
End If
Next i
Loop Until sortiert
ergebnis = Join(test, ",")
BubbleSort = ergebnis
End Function
|