Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Zelleninhalt löschen nach gewisser Zeit
#1
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
Antwortento top
#2
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
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
  • Tom 002
Antwortento top
#3
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
Antwortento top
#4
Hallo, 19

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

Habe dir mal ein Beispiel gemacht: 21

.xlsb   Workbook_Open_und_Worksheet_Change_Datum_L_40_Tage_Loeschen_B.xlsb (Größe: 19,91 KB / Downloads: 5)

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.
________
Servus
Case
[-] Folgende(r) 1 Benutzer sagt Danke an Case für diesen Beitrag:
  • Tom 002
Antwortento top
#5
Hallo Case,

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

Beste Grüße
Tom
Antwortento top
#6
Thumbs Up 
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
[-] Folgende(r) 1 Benutzer sagt Danke an Tom 002 für diesen Beitrag:
  • Case
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste