Hallo allerseits,
ich habe 2 Spalten (in einer Excel 2003 Liste) auf die es ankommt:
Spalte C (Wert1) und Spalte D (Wert2).
Ich möchte gerne Folgendes erreichen:
Wenn ich in eine Zelle in Spalte C einen Wert1 eintrage, soll der
Inhalt der rechts daneben befindlichen Zelle in Spalte D - also Wert2
gelöscht werden.
Genauso umgekehrt. Bei Änderungen in Spalte D soll die links neben
der aktiven Zelle befindliche Zelle in Spalte C gelöscht werden.
Ich habe da zwar schon einen Ansatz - aber wahrscheinlich nicht der
Richtige. Der Makro-Code wird bei Änderungen (Worksheet_Change) im
Tabellenblatt ausgeführt:
---
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Wird Spalte D gefüllt (oder geändert), wird im Feld (links neben der aktiven Zelle) in Spalte C der Wert gelöscht
If Target.Column = 4 Then
Target.Offset(0, -1).Value = ClearContents
'Hiermit wird wieder auf die ursprünglich bearbeitete Zelle in Spalte D (zurück)gesprungen
Target.Select
'Wird Spalte C gefüllt (oder geändert), wird im Feld (rechts neben der aktiven Zelle) in Spalte D der Wert gelöscht
ElseIf Target.Column = 3 Then
Target.Offset(0, 1).Value = ClearContents
Target.Select
End If
End Sub
---
Allerdings kommt es hierbei zu einer Kreuz-Endlosschleife, da ja
jeweils die gegenüberliegenden Werte (immer wieder) geändert werden.
Nutze ich nur einen Part davon, also z. B.
---
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Wird Spalte C gefüllt (oder geändert), wird im Feld (rechts neben der aktiven Zelle) in Spalte D der Wert gelöscht
If Target.Column = 3 Then
Target.Offset(0, 1).Value = ClearContents
Target.Select
End If
End Sub
---
funktioniert es genau so wie ich es mir wünsche - allerdings
eben nur in eine Richtung und nicht in Beide.
Für Verbesserungsvorschläge oder bessere Ideen wäre ich sehr dankbar!
Liebe Grüße
Karl