als relativer Neuling in VBA für Excel habe ich folgendes Problem:
Wenn in der Spalte J "PC" eingegeben wird, soll die benachbarte Zelle aus Spalte K und die darunter liegenden Zellen mit der "Target-Zelle" verbunden werden. Weitere mögliche Einträge für die Spalten J und K sind "PR" und "frei". Bei "PR" und "frei" sollen nur die darunterliegenden Zellen verbunden werden. Das ist soweit noch nicht schwierig.
Das Problem ist, wenn ich in die Zelle mit dem EIntrag "PC" anschließend wieder "frei" eintrage, soll sich der Zellenverbund zwischen Spalte J und K wieder auflösen, und es soll auch in der benachbarten Zelle (also in Spalte K) der Eintrag "frei" stehen.
Dies darf aber nur dann passieren, wenn zuvor die Zellen über die Spalten hinweg verbunden waren. (also über den Eintrag "PC")
Diese Einschränkung ist wichtig, da in anderen Zeilen dieser Spalten auch stehen kann:
J: "frei" und K: "PR" -> würde also jedes "frei" in Spalte J auch ein "frei in Spalte K bedeuten, dann würde der Eintrag "PR" aus obigem Beispiel verlorengehen.
Excel muss sich also sozusagen den alten Eintrag merken, und nur wenn dieser "PC" war, in beide Zellen "frei" schreiben.
WIE GEHT DAS??? (evt über "Worksheet_SelectionChange", da komm ich aber nicht weiter...)
Hier mein bisheriger Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column < 10 Then Exit Sub
If Target.Column > 11 Then Exit Sub
If IsEmpty(Target) Then Exit Sub
If Target.Column = 10 Then
If Target = "PC" Then
Target.UnMerge
Range(Target, Target.Offset(1, 1)).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
End With
Selection.Merge
ElseIf Target = "frei" Or Target = "PR" Then
Target.UnMerge
Range(Target, Target.Offset(1, 0)).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
End With
Selection.Merge
End If
End If
If Target.Column = 11 Then
If Target = "frei" Or Target = "PR" Then
Target.UnMerge
Range(Target, Target.Offset(1, 0)).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
End With
Selection.Merge
End If
End If
End Sub
mit der Hoffnung auf Hilfe und schönen Dank im Voraus
Krisotoff