Registriert seit: 01.11.2022
Version(en): LTSC Professional Plus 2021
Hallo,
Ich habe ein Excel Dokument in welchem ich mir anzeigen lasse welchen Kontostand mein Girokonto täglich haben muss. Sprich es gibt eine Spalte unterteilt in 12 Abschnitte welche wieder für jeden Tag eingeteilt ist. Die Tage liegen wie bei einem Kalender nur unter einander. In der Spalte J Kann ich den Aktuellen Kontostand Eintragen (J24 entspricht dem 01 Januar bis J388dem 31 Dezember) Nun möchte ich aber die eingetragenen Daten nicht jedes mal manuell löschen sondern, dass sie beim Monatswechsel automatisch gelöscht werden. Das ganze sollte mit einem Makro Befehl eigentlich funktionieren. Nur bekomme ich es nicht hin.
Zur Info: J24 bis J54 soll gelöscht werden wenn der Wert in A25 Falsch ist J55 bis J82 soll gelöscht werden wenn der Wert in A56 Falsch ist J83 bis J113 soll gelöscht werden wenn der Wert in A84 Falsch ist J114 bis J143 soll gelöscht werden wenn der Wert in A115 Falsch ist J144 bis J174 soll gelöscht werden wenn der Wert in A145 Falsch ist J175 bis J204 soll gelöscht werden wenn der Wert in A176 Falsch ist J205 bis J235 soll gelöscht werden wenn der Wert in A206 Falsch ist J236 bis J277 soll gelöscht werden wenn der Wert in A237 Falsch ist J278 bis J196 soll gelöscht werden wenn der Wert in A279 Falsch ist J297 bis J327 soll gelöscht werden wenn der Wert in A298 Falsch ist J328 bis J357 soll gelöscht werden wenn der Wert in A329 Falsch ist J358 bis J388 soll gelöscht werden wenn der Wert in A359 Falsch ist
Wichtig ist, es sollen nur die Inhalte aber nicht dir Formatierung der Felder gelöscht werden.
Falls mir da einer weiter helfen kann wäre ich super glücklich.
Lieben Gruß Mathias
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
01.11.2022, 21:42
(Dieser Beitrag wurde zuletzt bearbeitet: 01.11.2022, 21:44 von MisterBurns.)
Schlechter Tabellenaufbau, denn schon nächstes Jahr wird es dir den Code durcheinanderwürfeln ab dem März. Wäre mit Sicherheit eleganter mit einer 3-fach verschachtelten Schleife, war mir aber grad zu blöd, mir darüber den Kopf zu zerbrechen. Daher auf ganz pinschige Weise so: Code: Sub loeschen() Dim S As Integer 'Variable für Schaltjahr
With Tabelle1 'Tabellenname ggf. anpassen If IsDate(.Range("I389")) And Day(.Range("I389")) = 31 Then S = 1 If .Cells(25, 1) = "Falsch" Then .Range("J24:J54").ClearContents If .Cells(56 + S, 1) = "Falsch" Then .Range(.Cells(55 + S, 10), .Cells(82 + S, 10)).ClearContents If .Cells(84 + S, 1) = "Falsch" Then .Range(.Cells(83 + S, 10), .Cells(113 + S, 10)).ClearContents If .Cells(115 + S, 1) = "Falsch" Then .Range(.Cells(114 + S, 10), .Cells(143 + S, 10)).ClearContents 'usw. usw. End With End Sub
Die restlichen 8 Monate kriegst du selber hin. Zur Erklärung: Ich bin für das Beispiel davon ausgegangen, dass in Spalte I das eigentliche Datum steht - musst du ggf. anpassen, Im Falle eines Schaltjahrs wird zum Bereich einfach eins dazugezählt. Abgefragt wird vorher, ob in Zelle I389 ein Datum steht und ob der Tag darin 31 ist. Wenn das so ist, handelt es sich um ein Schaltjahr.
Schöne Grüße Berni
Registriert seit: 01.11.2022
Version(en): LTSC Professional Plus 2021
01.11.2022, 22:20
(Dieser Beitrag wurde zuletzt bearbeitet: 01.11.2022, 22:24 von ABZO.)
Dankeschön sehr lieb
Das Jahr ändert sich nicht. Soll Dauerhaft auf 2022 bleiben. Dient ja nur als persönliche Übersicht.
Lieben Gruß Mathias
Ich bekomme es leider nicht hin
Der schreibt Fehler beim Kompilieren: End sub erwartet
Kann mir vielleicht einer erklären wie ich das Makro erstelle? Ich habe unter Entwiklertools auf Makros geklickt. Dann einen Beliebigen Namen erstellt. Auf erstellen geklickt. Nun den Code eingefügt. Sobald ich in Visual Basic for Application den Play Button drücke kommt der Fehler.
Was habe ich denn nun falsch gemacht?
Kann mir das vielleich mal einer Schritt für Schritt erklären?
Dankeschön Lieben Gruß Mathias
Ok Fehler gefunden. Hab die Letzte Reihe End Sub nicht kopiert. Allerdungs funktioniert es leider nicht
Lieben Gruß Mathias
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Funktioniert nicht ist absolut nicht hilfreich. Was funktioniert nicht, wo hapert es?
Schöne Grüße Berni
Registriert seit: 01.11.2022
Version(en): LTSC Professional Plus 2021
Ich Kann das Makro zwar ausführen. Allerdings muss ich es zum Ausführen jedes mal starten. Es sollte allerdings bei jeder Änderung von Wahr auf Falsch automatisch ausgelöst werden und nicht nur in dem Moment wo ich das Makro starte. Jedes mal wenn eins Der Felder von Wahr auf Falsch wechselt sollte es ausgelöst werden.
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Das würde ich mir an deiner Stelle GANZ GANZ GANZ genau überlegen, ob du das wirklich willst. Denn ein Zurück gibt es nicht, einmal gelöscht sind die Werte weg. Gibst du also irrtümlich mal "Falsch" ein, hast du Pech gehabt.
Schöne Grüße Berni
Registriert seit: 01.11.2022
Version(en): LTSC Professional Plus 2021
Das macht in dem Fall nichts aus. Hier geht es um einen persönlichen Prognoseplan. Theoretisch kann der eingegebene Wert auch schon beim nächsten eingeben gelöscht sein. Es geht nur darum einen Betrag einzugeben und er zeigt mir in den Felder Rechts davon an ob mein vor Lohneingang noch im Plus steht, im Dispo Bereich oder unter dem Dispolimit liegt. Sowie den genauen betrag der dann vor Lohneingang meinen Kontostand bildet. Ich tippe im J Feld des Entsprechenden Tages den Aktuellen Kontostand ein. Er zeigt mir im K Feld den errechneten Kontostand vor Lohneingang an und im N Feld im Ampel Schema Rot, Gelb und Grün an ob Mein Konto dann im Plus, im Dispobereich oder unter dem Limit des Dispos liegt. Durch dieses Dokument schaffe ich es seid etwa einem halben Jahr nicht mehr mein Konto überzogen zu haben. Allerdings wäre die Automatische Löschung der J Felder noch praktisch.
Lieben Gruß Mathias
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim S As Integer 'Variable für Schaltjahr
If Not Intersect(Target, Range("A25,A56,A84,A115,A145,A176,A206,A237,A279,A298,A329,A359")) Is Nothing Then Exit Sub If Selection.Count > 1 Then Exit Sub With Tabelle1 If IsDate(.Range("I389")) And Day(.Range("I389")) = 31 Then S = 1 If .Cells(25, 1) = "Falsch" Then .Range("J24:J54").ClearContents If .Cells(56 + S, 1) = "Falsch" Then .Range(.Cells(55 + S, 10), .Cells(82 + S, 10)).ClearContents If .Cells(84 + S, 1) = "Falsch" Then .Range(.Cells(83 + S, 10), .Cells(113 + S, 10)).ClearContents If .Cells(115 + S, 1) = "Falsch" Then .Range(.Cells(114 + S, 10), .Cells(143 + S, 10)).ClearContents 'usw. usw. End With
End Sub
Code gehört in das Modul des betreffenden Tabellenblatts.
Schöne Grüße Berni
|