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

Forumthread: VBA - Zelle löschen wenn Bedingung erfüllt

VBA - Zelle löschen wenn Bedingung erfüllt
02.10.2018 18:45:50
Micha
Hallo zusammen, ich hoffe ihr könnt mir helfen!
Meine Sachlage:
Im Bereich D60:ND60;D61:ND61;.... darf nur eine bestimmte Anzahl vom Wert "5" enthalten sein.Zum Beispiel max. 10 pro Zeile. Ich habe es mir jetzt soweit eingerichtet das eine MsgBox erscheint sobald ich den 6. Wert eintrage, nun möchte ich aber das nachdem ich in der MsgBox auf OK geklickt habe der letzte eingetragene Wert wieder gelöscht wird und eine Überschreitung somit nicht möglich ist. Das alles muss dann noch im Anschluss bis Zeile 99 runter.
Ich bin für jede Hilfe sehr Dankbar. Bitte bedenkt das ich im VBA-Bereich leider nur begrenzte Kenntnisse besitze.
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Zelle löschen wenn Bedingung erfüllt
02.10.2018 18:52:00
Micha
Entschuldigt ich meinte natürlich das die MsgBox beim eingeben des 11. Wertes erscheint.
AW: VBA - Zelle löschen wenn Bedingung erfüllt
02.10.2018 19:32:00
Daniel
HI
Das müsste auch ohne VBA machbar sein über die Daten - Datentools - Datenüberprüfung.
markiere die Zellen D60:NDxx und richte für sie über DATENÜBERPRÜFUNG folgendes ein:
Benutzerdefniert:

=ZählenWenn($D60:$ND60;5)

Im Reiter "Fehlermeldung" kannst du dann eine entsprechende Hinweismelung angeben.
das deckt zumindest mal die direkte Eingabe des Wertes in eine Zelle ab.
wenn du bei deinem Code bleiben willst, dann wäre es gut, wenn du mal zeigen würdest, was du schon hast.
um die Eingabe der 11. 5 wieder Rückgängig zu machen kannst du einfach folgendes im Code ausführen:
With Application.
.EnableEvents = false
.Undo
.EnableEvents = true
end with
Gruß Daniel
Anzeige
AW: VBA - Zelle löschen wenn Bedingung erfüllt
02.10.2018 20:19:22
Micha
Hallo Daniel, danke erstmal für die schnelle Antwort.
hier mein bisheriger Code:

Private Sub Worksheet_Calculate()
If ActiveSheet.Range("NE60").Value > 10 Then
MsgBox "Max erreicht", vbCritical + vbOKOnly + vbSystemModal, "Achtung"
Dim Msg, Style, Title
Msg = "Max erreicht"
Style = vbOKOnly + vbCritical + vbSystemModal
Title = "Achtung"
End If
End Sub

Anzeige
AW: VBA - Zelle löschen wenn Bedingung erfüllt
02.10.2018 20:29:34
Micha
Ich habe in Zelle "NE60" die Formel "Zählenwenn" verbaut um leichter an die MsgBox zu kommen. Falls du dich fragst warum im Code "NE60" steht anstelle von "D60:ND60".
AW: VBA - Zelle löschen wenn Bedingung erfüllt
02.10.2018 20:47:51
Micha
Hab es hinbekommen, besten Dank!!! Und noch einen entspannten Abend.
;

Forumthreads zu verwandten Themen

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

Zellen in Excel löschen, wenn eine Bedingung erfüllt ist


Schritt-für-Schritt-Anleitung

Um in Excel Zellen zu löschen, wenn eine bestimmte Bedingung erfüllt ist, kannst Du sowohl VBA als auch die Datenüberprüfung verwenden. Hier ist eine einfache Anleitung für beide Methoden:

1. Mit VBA:

  • Öffne Excel und drücke Alt + F11, um den VBA-Editor zu starten.
  • Füge folgenden Code in das passende Arbeitsblatt ein:
Private Sub Worksheet_Calculate()
    If Application.WorksheetFunction.CountIf(Range("D60:ND60"), 5) > 10 Then
        MsgBox "Maximal 10 Werte erlaubt!", vbCritical + vbOKOnly + vbSystemModal, "Achtung"
        Application.EnableEvents = False
        ActiveSheet.Range("NE60").Undo ' Letzte Eingabe zurücknehmen
        Application.EnableEvents = True
    End If
End Sub
  • Dieser Code überprüft, ob in den Zellen D60 bis ND60 mehr als 10-mal der Wert "5" eingegeben wurde. Wenn ja, wird die letzte Eingabe gelöscht.

2. Mit Datenüberprüfung:

  • Markiere die Zellen D60:ND99.
  • Gehe zu Daten > Datenüberprüfung.
  • Wähle Benutzerdefiniert und gebe folgende Formel ein:
=ZählenWenn($D60:$ND60;5)<=10
  • In der Registerkarte "Fehlermeldung" kannst Du eine entsprechende Nachricht eingeben.

Häufige Fehler und Lösungen

1. Fehler: MsgBox erscheint nicht, wenn der Wert überschritten wird.
Lösung: Stelle sicher, dass das VBA-Makro in der richtigen Arbeitsmappe gespeichert ist und die Berechnungseinstellungen auf "Automatisch" gesetzt sind.

2. Fehler: Datenüberprüfung funktioniert nicht.
Lösung: Überprüfe, ob die Formel für die Datenüberprüfung korrekt eingegeben wurde und dass die richtigen Zellen ausgewählt sind.


Alternative Methoden

Wenn Du keine VBA-Programmierung verwenden möchtest, kannst Du auch bedingte Formatierungen nutzen, um Zellen hervorzuheben, die eine Bedingung erfüllen. Das Löschen erfolgt dann manuell.

  • Markiere die Zellen, gehe zu Start > Bedingte Formatierung > Neue Regel.
  • Wähle Formel zur Bestimmung der zu formatierenden Zellen verwenden und verwende die Formel:
=ZählenWenn($D60:$ND60;5)>10
  • Setze eine auffällige Formatierung, um die Zellen hervorzuheben.

Praktische Beispiele

Beispiel 1: Du möchtest in Zelle D60 bis ND60 maximal 10-mal den Wert "5" zulassen.

Beispiel 2: Wenn Du die ersten 10 Zeilen in einer Spalte hast und nur dann den Inhalt löschen möchtest, wenn eine bestimmte Bedingung erfüllt ist (z.B. Wert > 10), kannst Du den folgenden VBA-Code verwenden:

Sub CheckAndDelete()
    Dim cell As Range
    For Each cell In Range("A1:A10")
        If cell.Value > 10 Then
            cell.ClearContents ' Zelleninhalt löschen
        End If
    Next cell
End Sub

Tipps für Profis

  • Verwende Application.EnableEvents = False und Application.EnableEvents = True im VBA, um unerwünschte Schleifen zu vermeiden.
  • Teste Deinen Code nach jeder Änderung, um sicherzustellen, dass alles wie gewünscht funktioniert.
  • Dokumentiere Deinen VBA-Code, um ihn für andere (oder Dich selbst in der Zukunft) verständlicher zu machen.

FAQ: Häufige Fragen

1. Frage: Wie kann ich eine ganze Zeile löschen, wenn eine Bedingung erfüllt ist?
Antwort: Du kannst die Methode EntireRow.Delete verwenden, um eine Zeile zu löschen, wenn Deine Bedingung erfüllt ist. Beispiel:

If Range("A1").Value > 10 Then
    Range("1:1").EntireRow.Delete
End If

2. Frage: Kann ich die Datenüberprüfung auch für eine Spalte verwenden?
Antwort: Ja, Du kannst die Datenüberprüfung auf ganze Spalten anwenden, indem Du die entsprechenden Zellbereiche in der Datenüberprüfung auswählst.

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