06.08.2020, 12:35
Hallo,
ich habe die spannende Aufgabe ein Makro zum Archivieren von Altdaten aus einer Exceldatei zu basteln.
Die Situation ist folgende. Es gibt heute schon eine Exceldatei (siehe "Mappe1") in der täglich ein neues Blatt mit dem aktuellen Datum angelegt wird (bescheuert, aber ich habe die Vorgabe an der Datei nichts zu ändern) um dort in Tabellen, Diagrammen etc. verschiedene Kennzahlen zu berechnen, darzustellen usw.
Wie man sich denken kann, wird diese Datei immer größer und schwerfälliger, weswegen nun zwecks Makro die ältesten Daten immer wieder in eine neue Datei archiviert werden sollen (manuell ausgelöst), so dass die eigentliche Datei "schlank" bleibt.
Ich habe hierfür eine Archivdatei (siehe "ZielArchiv") erstellt, in der die Daten in einem Blatt in verschiedene Tabellen aus der "Mappe1" eingefügt werden sollen. Jedes Tabellenblatt (angefangen mit dem ältesten, also ganz rechts stehend) wird also ausgewählt, die Daten kopiert und ins "ZielArchiv" auf einem Sheet in mehrere Tabellen eingefügt. Anschließend werden in "Mappe1" die entsprechenden Blätter gelöscht.
Bei wie vielen Blättern das pro Vorgang gemacht werden soll, trägt der User zuerst nach Makrostart in eine aufkommende Userform ein. trägt er bspw. eine Zwei ein, dann soll die Userform das Makro also zweimal starten.
Das Makro soll als erstes auf das letzte Sheet springen, von dort die Daten in das Archiv übertragen und schließlich das Sheet in "Mappe1" löschen . Nach Abschluss des Vorgangs soll das Archiv gespeichert und geschlossen werden, so dass der User möglichst wenig davon mitbekommt.
Eigentlich habe ich das alles auch soweit hinbekommen, allerdings startet das Makro immer als erstes mit dem beim Makrostart aktiviertem Tabellenblatt und eben nicht mit dem letzten Tabellenblatt in der Mappe Der Fall ist in den Beispieldateien zu sehen). Komischerweise läuft es aber ab dem zweiten Durchlauf korrekt durch. Die Schleife aktiviert ja eigentlich nur ein Makro was dann mehrmals ausgeführt wird. Ein Fehler müsste somit doch eigentlich immer auftreten und nicht nur beim ersten Durchgang.
Ich finde meinen Fehler im Code nicht.
Ich hoffe hier kann mir jemand weiterhelfen.
Danke und Gruß
ich habe die spannende Aufgabe ein Makro zum Archivieren von Altdaten aus einer Exceldatei zu basteln.
Die Situation ist folgende. Es gibt heute schon eine Exceldatei (siehe "Mappe1") in der täglich ein neues Blatt mit dem aktuellen Datum angelegt wird (bescheuert, aber ich habe die Vorgabe an der Datei nichts zu ändern) um dort in Tabellen, Diagrammen etc. verschiedene Kennzahlen zu berechnen, darzustellen usw.
Wie man sich denken kann, wird diese Datei immer größer und schwerfälliger, weswegen nun zwecks Makro die ältesten Daten immer wieder in eine neue Datei archiviert werden sollen (manuell ausgelöst), so dass die eigentliche Datei "schlank" bleibt.
Ich habe hierfür eine Archivdatei (siehe "ZielArchiv") erstellt, in der die Daten in einem Blatt in verschiedene Tabellen aus der "Mappe1" eingefügt werden sollen. Jedes Tabellenblatt (angefangen mit dem ältesten, also ganz rechts stehend) wird also ausgewählt, die Daten kopiert und ins "ZielArchiv" auf einem Sheet in mehrere Tabellen eingefügt. Anschließend werden in "Mappe1" die entsprechenden Blätter gelöscht.
Bei wie vielen Blättern das pro Vorgang gemacht werden soll, trägt der User zuerst nach Makrostart in eine aufkommende Userform ein. trägt er bspw. eine Zwei ein, dann soll die Userform das Makro also zweimal starten.
Das Makro soll als erstes auf das letzte Sheet springen, von dort die Daten in das Archiv übertragen und schließlich das Sheet in "Mappe1" löschen . Nach Abschluss des Vorgangs soll das Archiv gespeichert und geschlossen werden, so dass der User möglichst wenig davon mitbekommt.
Eigentlich habe ich das alles auch soweit hinbekommen, allerdings startet das Makro immer als erstes mit dem beim Makrostart aktiviertem Tabellenblatt und eben nicht mit dem letzten Tabellenblatt in der Mappe Der Fall ist in den Beispieldateien zu sehen). Komischerweise läuft es aber ab dem zweiten Durchlauf korrekt durch. Die Schleife aktiviert ja eigentlich nur ein Makro was dann mehrmals ausgeführt wird. Ein Fehler müsste somit doch eigentlich immer auftreten und nicht nur beim ersten Durchgang.
Ich finde meinen Fehler im Code nicht.
Ich hoffe hier kann mir jemand weiterhelfen.
Danke und Gruß