Zeilen löschen und gleichzeitig Formeln einfügen

josef24

Erfahrenes Mitglied
Ja, so hatte ich es mir vorgestellt. Die Formel jeweils rein kopieren wenn ein Datum in Spalte "E" geschrieben wird. Gruß Josef
 

josef24

Erfahrenes Mitglied
Danke, dass mit der Formel kopieren passt perfekt. Leider löscht er aber nicht die Daten/Zeilen wo die Bedingung erfüllt wäre. Könnte man da nochmal schauen? Gruß Josef
 

Zvoni

Erfahrenes Mitglied
Weil du dein Lösch-Kriterium eben nicht VORHER drin hast, wenn die Prüfung stattfindet.
Unabhängig von deiner Vorgehensweise, würde ich es eher so machen:
2 Schleifen!
1. Schleife füllt deine Formel in Spalte F
2. Schleife (rückwärts) prüft auf dein Kriterium, falls erfüllt, delete
In der Reihenfolge. Zuerst deine Formel füllen, dann aufräumen
 

josef24

Erfahrenes Mitglied
Danke, die Reihenfolge mit Formel einfügen und Zeilen löschen in gewisser Reihenfolge hatte ich auch in meiner Überlegung. Kann es mangels Kenntnis leider nicht umsetzen. Könnte vielleicht noch jemand helfen? Gruß Josef
 

Zvoni

Erfahrenes Mitglied
Aircode! Ungetestet
Code:
With Info
For lngZeile = lngZeileMax To 2 Step -1
    .Cells(lngZeile, zielspalte).FormulaLocal = "=WENN(E" & lngZeile & "="""";"""";DATEDIF(E" & lngZeile & ";HEUTE();""D""))"
Next

For lngZeile = lngZeileMax To 2 Step -1
    If .Range(lngZeile, zielspalte) >= 30 Then .Rows(lngZeile).Delete ' Löscht Daten älter 30 Tage
Next
End With
 

josef24

Erfahrenes Mitglied
Danke, der Code läuft, Formel einfügen ist aktiv, löschen ist aber so nicht aktiv. Auch die Funktion löschen als eigenständiger Code macht nichts???? Es gibt in keinster Weise einen Fehlerhinweis. Gruß Josef
 

Zvoni

Erfahrenes Mitglied
Arggghh...ich sehe gerade in der Lösche-Routine ist es ".Range(Zeile,Spalte)"
Änder das mal ab auf ".Cells(Zeile,Spalte)"

P.S.: Du kannst auch beide Schleifen zusammenlegen:
Code:
With Info
For lngZeile = lngZeileMax To 2 Step -1
    .Cells(lngZeile, zielspalte).FormulaLocal = "=WENN(E" & lngZeile & "="""";"""";DATEDIF(E" & lngZeile & ";HEUTE();""D""))"
    If .Cells(lngZeile, zielspalte) >= 30 Then .Rows(lngZeile).Delete ' Löscht Daten älter 30 Tage
Next
End With
Falls es immer noch nicht will, kann es an der Formatierung der Zelle liegen.
Schau dir mal im Einzelschritt an, ob es als Zahl oder Text angezeigt wird.

EDIT: Ich geh mal schwer davon aus, dass "Info" ein Worksheet-Objekt ist?
 

josef24

Erfahrenes Mitglied
Danke, habe gerade mal geschaut. "Info" ist ein Worksheet. Die Spalte 6 oder "F" wo der Wert der Formel stehen soll hatte ich als Standard wie auch als Zahl formatiert. Text funktioniert auch nicht. Sorry, aber mit dem Code aus #18 bewegt sich gar nichts. Erlaube mir mal die Datei anzuhängen. Gruß Josef
 

Anhänge

  • Mappe1.zip
    70,3 KB · Aufrufe: 1