hier eine Beispieldatei zu meinem Problem:
https://www.herber.de/bbs/user/149609.xlsm
Wenn ich in Spalte 1 nun die Auswahl 1 treffe und daraufhin die Auswahl 2, wird es wie gewünscht in einer Zelle mit kommatrennung angezeigt.
Wenn ich nun eine Zelle tiefer gehe und 3 auswähle erhalte ich 1, 2, 3. Bei Sprung in eine neue Zelle soll allerdings nicht der Wert aus der davorriegen übertragen werden. Gleiches passiert auch bei sprung in eine Zelle einer anderen Spalte.
Kann mir da jemand den Code entsprechend umschreiben, dass ich bei Eingabe in eine neue Zelle nicht die Einträge der davorriegen erhalte?
Mein Code ist wie folgt:
Const bolSorted As Boolean = True ' Legt fest, ob die Werte noch sortiert werden.
Dim blockedEvent As Boolean
Dim TargetOldText As String
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strResult As String
Dim strTarget As String
Dim arrSorted As Variant
Dim i As Long
If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 3 Then
strTarget = Trim(Target.Value)
If Not blockedEvent Then
blockedEvent = True
If Not TargetOldText = "" And Not Target.Value = "" Then
If InStr(1, TargetOldText, Target.Value) > 0 Then
strResult = Replace(TargetOldText, ", " & strTarget, "")
strResult = Replace(strResult, strTarget & ", ", "")
strResult = Replace(strResult, strTarget, "")
Else
strResult = TargetOldText & ", " & Target.Value
End If
If bolSorted Then
arrSorted = Split(strResult, ", ")
strResult = ""
Call Selectionsort(arrSorted)
For i = 0 To UBound(arrSorted)
strResult = strResult & arrSorted(i) & ", "
Next i
If Len(strResult) > 1 Then _
strResult = Left$(strResult, Len(strResult) - 2)
End If
Target.Value = strResult
Else
Target.Value = Target.Value
End If
TargetOldText = Target.Value
Else
blockedEvent = False
End If
Else
TargetOldText = ""
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Column = TargetColumn Then
TargetOldText = Target.Value
End If
[TargetZeile] = Target.Row
[TargetSpalte] = Target.Column
[TargetValue] = Target.Value
End Sub
Private Sub Selectionsort(ByRef data As Variant)
Dim OG&, i&, j&, k&, h As Variant
OG = UBound(data)
For i = 0 To OG - 1
h = data(i)
k = i
For j = i + 1 To OG
If data(j)