ich bastel nun seit einigen Tagen an einer Lösung zu einem Problem und komme einfach nicht drauf.
Was soll passieren, wenn Text in Spalte A und Spalte B in der selben Zeile vorhanden ist, soll dieser in Spalte C zusammegeführt werden, ausgenommen Zeile 1. Vorher soll dieser noch mit Trim um seiner überflüssigen Leerstellen bereinigt werden.
Das alles soll bei Änderung passieren.
Mein Ansatz hat auch funktioniert allerdings wird Trim erst nachher ausgeführt, weshalb das zusammengeführte in spalte C noch fehlerhaft ist.
Mein letzter fehlgeschlagener Versuch:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
If Not Intersect(Target, Range("A:B")) Is Nothing Then
If Not IsEmpty(Cells(Target.Row, "A")) And Not IsEmpty(Cells(Target.Row, "B")) Then
Dim tempArea
Dim Bereich As Range
Dim A As Long, B As Long
Set Bereich = Range("A1:B1").Resize(Cells(Rows.Count, "B").End(xlUp).Row)
tempArea = Bereich
For A = 1 To UBound(Bereich, 1)
For B = 1 To UBound(Bereich, 2)
Bereich(A, B) = WorksheetFunction.Trim(Bereich(A, B))
Next B
Next A
Bereich = tempArea
With Cells(Target.Row, "C")
.NumberFormat = "@"
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Font.Size = 20
.Value = .Offset(0, -2).Text & "_" & .Offset(0, -1).Text
End With
Else
Cells(Target.Row, "C") = ""
End If
End If
End Sub
Was "falschherum" funktioniert hat:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
If Not Intersect(Target, Range("A:B")) Is Nothing Then
If Not IsEmpty(Cells(Target.Row, "A")) And Not IsEmpty(Cells(Target.Row, "B")) Then
With Cells(Target.Row, "C")
.NumberFormat = "@"
.HorizontalAlignment = xlCenter
.Font.Bold = True
.Font.Size = 20
.Value = .Offset(0, -2).Text & "_" & .Offset(0, -1).Text
End With
Else
Cells(Target.Row, "C") = ""
End If
End If
Dim tempArea
Dim Bereich As Range
Dim A As Long, B As Long
Set Bereich = Range("A1:B1").Resize(Cells(Rows.Count, "B").End(xlUp).Row)
tempArea = Bereich
For A = 1 To UBound(tempArea, 1)
For B = 1 To UBound(tempArea, 2)
tempArea(A, B) = Trim$(tempArea(A, B))
Next B
Next A
Bereich = tempArea
End Sub
Bei meinem Aktuellen code wird die Ganze Tabelle in Spalte A und B (befüllt) geprüft bei jeder Änderung der selbigen, wenn man das nur auf die geänderte Zeile reduzieren könnte wäre das auch wünschenswert.
Ich hoffe ihr habt einen Rat!
Viele Grüße!