Clever-Excel-Forum

Normale Version: VBA - Zelleninhalt löschen nach gewisser Zeit
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Morgen!
Ich habe mich gerade erst angemeldet, weil ich ein Excel-Problem habe, dass ich trotz Recherche bislang nicht lösen konnte. Auch hier im Forum habe ich bislang nichts dazu finden können.
Ich beherrsche lediglich Excel-Basis-Wissen und bin mit VBA-Code nicht vertraut. Ich möchte Euch um Unterstützung und/oder Rat zu folgendem Thema bitten:

Ich habe eine Excel-Liste, in der im Feld B8 eine Nummer eingegeben wird, die nach einem bestimmten Zeitraum gelöscht werden soll (z.B. 40 Tage), wenn im Feld L8 ein Datum eingegeben wird.
Mit dem jetzigen Code ist es so, das die Nummer in B8 gelöscht wird, sobald ein Wert in L8 eingegeben wird. Ich hätte gern eine Lösung, in der das Datum in L8 eingegeben wird und dann (anhand des
eingegebenen Datums) eine Löschung des Feldinhalts (B8) erst nach z.B. 40 Tagen erfolgt (und nicht sofort). Ist so etwas möglich?
Dies ist der Code der aktuell verwendet wird:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Columns("L")) Is Nothing Then
        If Target.Value <> "" Then
            Cells(Target.Row, "B").Value = ""
        End If
    End If
End Sub


Über Unterstützung würde ich mich freuen! Blush

Vielen Dank und beste Grüße!
Tom
Hallo Tom,

Dein code reagiert auf eine Eingabe. Wenn die Reaktion erst nach 40 Tagen erfolgen soll, dann müsstest Du ein anderes Ereignis benutzen, z.B. beim Öffnen der Datei oder beim Aktivieren des Blattes oder ...

Code:
Private Sub Workbook_Open()
'Variablendeklaration
Dim iCnt%
'Zeilenzaehler auf Anfang setzen
iCnt = 1
'Schleife solange in B was steht
Do While Cells(iCnt, 2).Value <> ""
  'Wenn das Datum in L kleiner aktuelles Datum - 40 ist, dann B leeren
  If Cells(iCnt, 12).Value < Date - 40 Then Cells(iCnt, 2).Value = ""
  'Zeilenzaehler hoeher setzen
  iCnt = iCnt + 1
'Ende Schleife solange in B was steht
Loop
End Sub
Hallo André,

vielen Dank für Deine Hilfe!
Ich habe den Code unter Tabelle1 eingegeben und dann zurückliegende Daten (über - 40)  in die Felder unter "L/12" eingegeben. Die Eintragungen in den Feldern unter "B/2" werden aber nicht
gelöscht.... Habe ich ggf. einen Fehler gemacht? Ganz wahrscheinlich ist das so :19: .
Wird die Prüfung der Werte eigentlich gestartet, sobald die Liste geöffnet wird? Gibt es weitere Einstellungen
in der Liste die ich vornehmen muss, um eine automatische Prüfung über den Code zu gewährleisten?


Danke und beste Grüße
Tom
Hallo, :19:

"Private Sub Workbook_Open()" gehört unter "DieseArbeitsmappe"!

Habe dir mal ein Beispiel gemacht: :21:
[attachment=32777]

Hier wird beim öffnen der Datei und bei der Eingabe des Datums in Spalte L reagiert.

Ist in L kein Datum, wird in B auch nichts gelöscht.

Auch mehrere Daten in Spalte L können verarbeitet werden.

Bei solchen Aktionen musst du immer die Events ausschalten, sonst ruft sich der Code selber auf.
Hallo Case,

okay - das werde ich später mal ausprobieren! Erst einmal vielen Dank!

Beste Grüße
Tom
Hallo Case,

ich bin jetzt endlich dazu gekommen Deine Datei zu laden und den Code in meiner Liste zu testen:
Funktioniert wunderbar! Vielen Dank noch einmal!

Beste Grüße
Tom