Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zelleninhalt löschen, wenn Zelle x

Zelleninhalt löschen, wenn Zelle x
08.07.2021 17:15:14
Jenny
Hallo Ihr Lieben,
ich habe nun ein ganze Weile eine Lösung für mein Problem gesucht, aber nichts gefunden.
Ich möchte gerne, dass wenn in Zelle 1 (DropDown mit Textinhalten) etwas steht, dann der Zelleninhalt aus Zelle 2 (Zahl oder Wort... egal) gelöscht wird.
Grundsätzlich funktioniert das auch, aber leider nur bei Zahlenwerten und ohne DropDown.
Ich habe auch schon versucht nur "Range("Zelle2").ClearContents" mit einer WENN-DANN Bedingung aus dem Tabellenblatt zu starten, um den If-Block im VBA zu umgehen (habe versucht das Sub mit ner Funktion zu starten) .... Geht aber wohl nicht, da man über diesen Weg nicht den Wert der Zelle ändern kann.... und das will ich ja.
Lange Rede und so.... hier der Link zu einer Beispieldatei:
https://www.herber.de/bbs/user/147013.xlsm
ich hoffe der Link funktioniert...
In jedem Fall Ganz lieben Dank für Eure Hilfe.
VG Jenny
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalt löschen, wenn Zelle x
08.07.2021 17:33:37
Daniel
HI
so für die Zelle C2 als DropDownzelle und für denn Fall, dass bei jedem belieigen Inhalt außer Leer die Zelle darunter geleert wird.

Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$C$2" Then
If Target.Value  "" Then
Application.EnableEvents = False
Range("C3").ClearContents
Application.EnableEvents = True
End If
End If
End Sub
das Application.EnableEvents verhindert hier den Selbstaufruf des Makros, wenn es eine Änderung auf dem Blatt durchführt.
Das ist immer sinnvoll, wenn man das weglässt, kann man schnell in eine Endlosschleife geraten (hier würde es auch ohne funktionieren, weil die Prüfung dafür sorgt dass es zu einem Abbruch kommt, aber das muss nicht immer so sein).
dein Beispiel mit der Zahl funktioniert eher zufällig:
wenn du mehrere "=" in so einer Bedingungsprüfung kombinierst, dann werden die so berechnet wie eine normale Berechnung mit +-*/ auch.
dh zuerst werden die Werte links und rechts des ersten "=" mit einander verglichen; dh Target.Address mit "$A$2", das ergibt TRUE oder FALSE.
Dann wird dieses Ergebnis mit dem nächsten Wert verglichen, also TRUE/FALSE mit "1".
das müsste jetzt immer ein FALSE ergeben, weil ein Wahrheitswert immer was anderes ist als ein Text, aber hier schlägt jetzt die Implizite Typumwandlung zu.
weil du versuchst, einen Text mit einem Wahrheitswert zu vergleichen, versucht VBA diesen Text in einen Wahrheitswert zu wandeln und dabei gilt die Regel, dass ein Text, der einer Zahl ungleich 0 entspricht, ein TRUE ergibt.
dh der letzte Vergleich ist dann TRUE = TRUE und damit als ganzes TRUE.
Daher funktioniert es in dieser Konstellation, aber wie gesagt, das ist eher Zufällig.
Gruß Daniel
Anzeige
AW: Zelleninhalt löschen, wenn Zelle x
08.07.2021 18:06:15
Jenny
Hallo Daniel,
Wow! Ganz lieben Dank für deine schnelle Antwort und die Erläuterung. :)
Es funktioniert auch wunderbar! :D Ich habe das jetzt so gemacht, dass nur bei bestimmten Zelleinhalten Zelle 2 geleert wird.
Nun hab ich aber doch noch ein Problem: Ich habe eine ziemlich komplexe Excel, wo sehr viel programmiert worden ist. Ich wollte diese lediglich durch diese Funktion ergänzen. Jedenfalls sagt er mir nun "Fehler beim Kompilieren: Mehrdeutiger Name: Worksheet_Change
Ich habe nachgeguckt. Es gibt diese Bezeichnung für ein Sub schon. Habe versucht dein Sub in ein Modul zu packen ... aber dann funktioniert es nicht mehr. Gibt es eine Möglichkeit wie ich beide "Worksheet_Change" in einem Tabellenblatt nutzen kann?
Ich kann dir auch mehr Infos zu der Datei geben: So sieht der Code (wiederholende Zeilen für weitere Blätter entfernt) für diese Blatt aus:
(Wobei es noch mindestens 2 Module gibt, die hier ebenfalls drauf zugreifen)

Private Sub Worksheet_Change(ByVal Target As Range)
'ausblenden Spalten
Worksheets("Prep").Columns("C:AE").Hidden = True
'ausblenden Zeile
Worksheets("Prep").Rows("8:78").EntireRow.Hidden = True
Call Listboxfüllen(5, 63, "I", "J", 10, 1, 2) 'Prep
'einblenden Spalte
Call einblenden("Prep", "J")
'einblenden Zeile
Call ZeileEinblenden(5, 63)
'Check for RMV duration
If WorksheetFunction.Sum(Range("AE5"), Range("AG5")) > 12 Then
MsgBox "RMV: Conduct and travel time about 12h! Recommendation: increase number of RMVs OR plan overnight stay.", vbInformation, "Time window exceeded"
End If
If WorksheetFunction.Sum(Range("AE6"), Range("AG6")) > 12 Then
MsgBox "RMV: Conduct and travel time about 12h! Recommendation: increase number of RMVs OR plan overnight stay.", vbInformation, "Time window exceeded"
End If
If WorksheetFunction.Sum(Range("Y3"), Range("Y5")) > 1 Then
MsgBox "in-/exclusion criteria are subset of CRF items", vbInformation, "You exceeded 100% of patients"
End If
End Sub
Ganz lieben Dank nochmal
VG Jenny
Anzeige
AW: Zelleninhalt löschen, wenn Zelle x
08.07.2021 18:14:56
Daniel
Hi
es kann nur ein Worksheet-Change-Event Makro geben und dieses muss im Modul des Tabellenblatts stehen.
wenn darin mehrere Sachen gemacht werden sollen, dann muss man die Codes halt in ein Marko packen.
Über die IF-Abfrage, welche Zelle(n) geändert wurden, kannst du ja bestimmen, wann welcher Teil ausgeführt wird
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zelleninhalt löschen, wenn Zelle x


Schritt-für-Schritt-Anleitung

Um den Zelleninhalt in Excel zu löschen, wenn ein bestimmter Wert in einer DropDown-Liste ausgewählt wird, kannst du das folgende VBA-Makro verwenden. Dies funktioniert in Excel-Versionen, die Makros unterstützen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Suche im Projektfenster das Arbeitsblatt, auf dem du das Makro anwenden möchtest.
  3. Doppelklicke auf das Arbeitsblatt, um das Codefenster zu öffnen.
  4. Füge den folgenden Code ein:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$2" Then
        If Target.Value <> "" Then
            Application.EnableEvents = False
            Range("C3").ClearContents
            Application.EnableEvents = True
        End If
    End If
End Sub
  1. Schließe den VBA-Editor und speichere die Datei als Makro-aktivierte Arbeitsmappe (*.xlsm).
  2. Teste das Makro, indem du in die Zelle C2 einen Wert aus der DropDown-Liste auswählst. Der Inhalt von C3 sollte gelöscht werden.

Häufige Fehler und Lösungen

  • Fehler: "Fehler beim Kompilieren: Mehrdeutiger Name: Worksheet_Change"

    • Lösung: Es kann nur ein Worksheet_Change-Ereignis pro Arbeitsblatt geben. Stelle sicher, dass du alle notwendigen Bedingungen in einem einzigen Worksheet_Change-Makro kombinierst.
  • Fehler: Excel Dropdown lässt sich nicht löschen

    • Lösung: Überprüfe, ob das Dropdown korrekt in den Zellen definiert ist. Du kannst das Dropdown über die Datenüberprüfung entfernen.

Alternative Methoden

  1. Excel Wenn-Dann-Lösungen: Du kannst auch Formeln verwenden, um den Zelleninhalt basierend auf Bedingungen zu steuern, z.B. mit einer Kombination aus WENN und LEER.

  2. Drop Down Liste löschen: Um eine DropDown-Liste in einer Zelle zu entfernen, gehe zu Daten > Datenüberprüfung und stelle die Einstellungen auf "Keine".


Praktische Beispiele

  • Beispiel 1: Wenn in Zelle C2 "Ja" ausgewählt wird, soll C3 geleert werden:
If Target.Address = "$C$2" Then
    If Target.Value = "Ja" Then
        Range("C3").ClearContents
    End If
End If
  • Beispiel 2: Mehrere Bedingungen mit unterschiedlichen Zellen:
If Target.Address = "$C$2" Then
    Select Case Target.Value
        Case "A"
            Range("C3").ClearContents
        Case "B"
            Range("C4").ClearContents
    End Select
End If

Tipps für Profis

  • Verwende Application.EnableEvents = False und True um zu vermeiden, dass das Makro in eine Endlosschleife gerät, wenn es Änderungen an der Arbeitsmappe vornimmt.
  • Teste deine VBA-Skripte in einer Kopie deiner Arbeitsmappe, um Datenverluste zu vermeiden.
  • Halte den Code modular, um die Lesbarkeit und Wartbarkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich ein Dropdown aus einer Zelle entfernen? Du kannst das Dropdown über Daten > Datenüberprüfung und dort auf "Keine" einstellen.

2. Was tun, wenn mein Excel-Makro nicht funktioniert? Überprüfe, ob die Makros aktiviert sind und stelle sicher, dass der Code im richtigen Modul platziert ist. Achte auch darauf, dass keine Syntaxfehler vorliegen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige