ich bin absoluter VBA neuling und versuche mich gerade an einem Projekt. Ich habe ein Tabellenblatt, das soll für jeden Werktag (also Samstag und Sonntag sollen ausgeschlossen werden) kopiert werden und an des ende angehangen werden. Allerding soll es nur immer für ein bestimmtes Jahr gemacht werden, also 2020 oder 202x. Gleichzeitig soll das Blatt mit dem jeweiligem Datum benannt werden und das Datum soll zusätzlich in eine Zelle E2 geschrieben werden. Dann möchte ich das VBA Projekt so speichern, dass ich dieses auch in anderen Arbeitsmappen verwenden kann. Dann bräuchte ich noch hilfe (vielleicht mit einem Screenshot) wo genau das ganze im Projekt Explorer eingehangen wird. Ich weiß, für einen noob vielleicht ein bischen viel am Anfang, aber ich wäre euch sehr dankbar für eure Hilfe.
ich hänge meine Tabelle mal mit dran. Das Blatt 07.01.2020 soll kopiert werden hinter dem ersten. Dann soll das kopierte Blatt umbenannt werden in 08.01.2020. Ebenso soll in die Zelle E2 das Datum 08.01.2020 geschrieben werden. Es sollen für jeden Werktag, also ohne Samstage und Sonntage neue Blätter erstellt werden bis zum letzten Tag des Jahres 2020. Dann will ich mir das Makro bzw. Projekt so abspeichern das ich die auch in anderen Mappen wieder benutzen kann.
Bulk sind Rohwaren, einfach ausgedrückt, Container mit irgendwelchen Stoffen.
Ja, ich will ca. 250 Blätter, das entspricht etwa allen Werktagen. Also besser gesagt, ich wollte das nicht, aber wenn man immer "hier" schreit auf der Arbeit dann landet sowas bei einem. Sinn der 250 Blätter ist eine Rückverfolgbarkeit. Diese ist Bestandteil der mir gestellten Aufgabe. Es gibt jemand der meint es könnte eben mal wichtig sein oder von Vorteil wenn man mal im November nachschauen kann was im Februar.
shift-del, danke für den guten Hinweis! Wenn die Performance leidet kommt Klaus-Dieter seine Lösung mit Datenüberprüfung doch wieder ins Spiel.
Mir geht jetzt tatsächlich erstmal nur darum wie ich generell so ein Makro aufbaue. Bin zwar auch schon etwas älter möchte aber trotzdem noch lernen.
07.12.2019, 09:10 (Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2019, 09:15 von RPP63.)
Moin! Vorweg: Dein Wunsch ist eine absolute Schnapsidee! Die Datei wird ohne Inhalte schlappe fast 14 MB groß. Man kann zwar darin arbeiten, aber das Speichern und öffnen dauert eine halbe Ewigkeit! Die Datei ist somit schlicht unbrauchbar!
Damit Du Dich selbst davon überzeugen kannst, zeige ich Dir mal mein Konstruktionsmakro:
Sub Monsterdatei()
Dim Datum As Date Datum = DateSerial(2020, 01, 08) Application.ScreenUpdating = False Do While Year(Datum) = 2020 Worksheets("07.01.2020").Copy After:=Worksheets(Worksheets.Count) ActiveSheet.Name = Format(Datum, "dd.mm.yyyy") Datum = WorksheetFunction.WorkDay(Datum, 1) Loop End Sub
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
vielen Dank für die hilfreichen Empfehlungen! Ich war die letzten Tage leider beruflich unterwegs und kann mich jetzt erst wieder meinem Projekt zuwenden. Aufgrund der Dateigröße würde ich dann doch pro Monat eine Mappe anlegen, das macht es vielleicht auch in der Ablage übersichtlicher.
Sub Monsterdatei()
Dim Datum As Date Datum = DateSerial(2020, 01, 08) Application.ScreenUpdating = False Do While Month(Datum) = Januar Worksheets("07.01.2020").Copy After:=Worksheets(Worksheets.Count) ActiveSheet.Name = Format(Datum, "dd.mm.yyyy") Datum = WorksheetFunction.WorkDay(Datum, 1) Loop End Sub
Ich habe den Code "Do While Month(Datum) = Januar" so angepasst für Monatsweise kopieren. Das ist doch sicher zu einfach gedacht oder? Woher weiß excel jetzt das es um den Monat Januar im Jahr 2020 geht oder ob es der Monat Januar im Jahr 2021 ist?