mir fehlt absolut nicht ein wie die Funtion heißt.
Also,
wenn ich in Zelle A1 etwas schreibe, dann soll es mir Zelle A2 löschen.
Schreibe ich dann aber in Zelle A2 etwas, dann soll es mir Zelle A1 löschen.
Gruß Michael
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngB As Range
Set rngB = Intersect(Target, Cells(1, 1).Resize(2))
If Not rngB Is Nothing Then
If rngB.Count = 2 Then
MsgBox "Es darf nur eine Zelle geändert werden."
ElseIf rngB.Count = 2 Then
Application.EnableEvents = False
If rngB.Row = 1 Then
Cells(2, 1).ClearContents ' oder Clear
Else
Cells(1, 1).ClearContents ' oder Clear
End If
Application.EnableEvents = True
End If
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-LintfortOption Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$1" And Target "" Then
Range("A2") = ""
ElseIf Target.Address = "$A$2" And Target "" Then
Range("A1") = ""
End If
Application.EnableEvents = True
End Sub
Um die Funktionalität zu erreichen, dass Zelle A2 automatisch geleert wird, wenn Zelle A1 beschrieben wird (und umgekehrt), benötigst du ein VBA-Makro. Folgende Schritte führst du aus:
Öffne dein Excel-Dokument.
Drücke ALT + F11
, um den VBA-Editor zu öffnen.
Doppelklicke auf das Arbeitsblatt, in dem du die Funktion haben möchtest (z.B. "Tabelle1").
Füge den folgenden Code ein:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$1" And Target <> "" Then
Range("A2") = ""
ElseIf Target.Address = "$A$2" And Target <> "" Then
Range("A1") = ""
End If
Application.EnableEvents = True
End Sub
Schließe den VBA-Editor und gehe zurück zu Excel.
Teste die Funktion, indem du in Zelle A1 oder A2 etwas schreibst.
Fehlermeldung beim Löschen: Wenn du eine Fehlermeldung erhältst, stelle sicher, dass das Makro korrekt eingefügt wurde und dass die Ereignisse in VBA aktiviert sind (Application.EnableEvents = True
).
Beide Zellen beschrieben: Der Code sorgt dafür, dass immer nur eine Zelle beschrieben ist. Wenn du versuchst, in beide Zellen gleichzeitig etwas einzutragen, wird das nicht funktionieren.
Falls du kein VBA verwenden möchtest, kannst du auch mit Gültigkeitsregeln arbeiten, um sicherzustellen, dass in A1 und A2 nicht gleichzeitig etwas steht:
=A2=""
.=A1=""
.Diese Methode verhindert jedoch nicht das manuelle Löschen und ist nicht so effektiv wie VBA.
Angenommen, du möchtest eine einfache Eingabeüberprüfung für eine Liste erstellen. Du kannst die oben genannten VBA-Methoden nutzen, um zu gewährleisten, dass immer nur eine der beiden Zellen (A1 oder A2) beschrieben ist. Wenn du beispielsweise in A1 "X" eingibst, wird A2 automatisch geleert.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Address = "$A$1" And Target <> "" Then
Range("A2") = ""
ElseIf Target.Address = "$A$2" And Target <> "" Then
Range("A1") = ""
End If
Application.EnableEvents = True
End Sub
Ereignismakros: Stelle sicher, dass du die Application.EnableEvents
-Eigenschaft verwendest, um zu verhindern, dass das Makro in eine Endlosschleife gerät, wenn Zellen geleert werden.
Erweiterte Validierung: Du kannst die Logik erweitern, um mehr Bedingungen hinzuzufügen, wie z.B. die Validierung von Inhalten in den Zellen.
1. Kann ich diese Methode auch für andere Zellen verwenden?
Ja, du kannst den VBA-Code anpassen, um auch andere Zellen zu überwachen. Ersetze einfach die Zelladressen im Code.
2. Funktioniert das in allen Excel-Versionen?
Ja, die vorgeschlagene Methode funktioniert in den meisten Excel-Versionen, die VBA unterstützen.
3. Gibt es eine Möglichkeit, diese Funktion ohne VBA zu implementieren?
Ja, du kannst die Gültigkeitsregeln verwenden, um sicherzustellen, dass nur eine Zelle beschrieben wird, jedoch ist dies weniger flexibel als ein VBA-Makro.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen