Im blauen Bereich steht in X17 keine Formel, ist das Richtig?
Runde 2: Daten in Excel aufteilen nach Monaten
-
Alina -
14. Februar 2018 um 14:43 -
Erledigt
-
-
Erst enmal DANKE !!!
Im blauen Bereich steht in X17 keine Formel, ist das Richtig?
Im blauen Bereich X17 ist keine Formel, das ist richtig. Sind Beispielinhalte.
-
Moin Moin.
Ich habe nun erst einmal das kopieren von der "Vorlage" in die verschiedenen erstellten Monatstabellenblätter fertig gestellt und es sieht nun wie folgt aus:
Beispieldatei: ewiger_kalender_0_0_10.rarCode
Alles anzeigenDim fertig As Boolean Sub KopGelbUndBlauAusMonatsvorlageInMonate() ' ' Den gelben und blauen Bereich aus der Monatsvorlage in die Monatsblätter kopieren ' fertig = False Call KopGelbAusMonatsvorlageInMonate If fertig = True Then Call KopBlauAusMonatsvorlageInMonate End If End Sub Sub KopGelbAusMonatsvorlageInMonate() ' ' Den gelben Bereich aus der Monatsvorlage in die Monatsblätter kopieren ' Set wksKalender = ThisWorkbook.Sheets(1) ' Variable setzen auf Tabelle 1 / "Kalender" intJahr = wksKalender.Cells(1, 2) ' Jahr aus Zelle "A1" auslesen Worksheets("Januar" & " " & intJahr).Range("A1:AE5").Clear 'Datenbereich löschen Worksheets("Februar" & " " & intJahr).Range("A1:AE5").Clear Worksheets("März" & " " & intJahr).Range("A1:AE5").Clear Worksheets("April" & " " & intJahr).Range("A1:AE5").Clear Worksheets("Mai" & " " & intJahr).Range("A1:AE5").Clear Worksheets("Juni" & " " & intJahr).Range("A1:AE5").Clear Worksheets("Juli" & " " & intJahr).Range("A1:AE5").Clear Worksheets("August" & " " & intJahr).Range("A1:AE5").Clear Worksheets("September" & " " & intJahr).Range("A1:AE5").Clear Worksheets("Oktober" & " " & intJahr).Range("A1:AE5").Clear Worksheets("November" & " " & intJahr).Range("A1:AE5").Clear Worksheets("Dezember" & " " & intJahr).Range("A1:AE5").Clear Sheets("Monatsvorlage").Select ' welches Tabellenblatt wird angesprochen Range("A1:AE5").Select ' welcher Bereich des Tabellenblattes wird angesprochen Application.CutCopyMode = True Selection.Copy ' was soll passieren ; hier kopieren Sheets("Januar" & " " & intJahr).Select ' ab hier kopieren in die Monatsblätter ActiveSheet.Cells(1.1).Activate ' aktive Zelle setzen ActiveSheet.Paste Sheets("Februar" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("März" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("April" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("Mai" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("Juni" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("Juli" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("August" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("September" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("Oktober" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("November" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste Sheets("Dezember" & " " & intJahr).Select ActiveSheet.Cells(1.1).Activate ActiveSheet.Paste ActiveWindow.ScrollWorkbookTabs Position:=xlFirst Sheets("Kalender").Select ' welches auf das Tabellenblatt "Kalender" fertig = True End Sub Sub KopBlauAusMonatsvorlageInMonate() ' ' Den blauen Bereich aus der Monatsvorlage in die Monatsblätter kopieren ' Set wksKalender = ThisWorkbook.Sheets(1) ' Variable setzen auf Tabelle 1 / "Kalender" intJahr = wksKalender.Cells(1, 2) ' Jahr aus Zelle "A1" auslesen Worksheets("Januar" & " " & intJahr).Range("X8:AE30").Clear 'Datenbereich löschen Worksheets("Februar" & " " & intJahr).Range("X8:AE30").Clear Worksheets("März" & " " & intJahr).Range("X8:AE30").Clear Worksheets("April" & " " & intJahr).Range("X8:AE30").Clear Worksheets("Mai" & " " & intJahr).Range("X8:AE30").Clear Worksheets("Juni" & " " & intJahr).Range("X8:AE30").Clear Worksheets("Juli" & " " & intJahr).Range("X8:AE30").Clear Worksheets("August" & " " & intJahr).Range("X8:AE30").Clear Worksheets("September" & " " & intJahr).Range("X8:AE30").Clear Worksheets("Oktober" & " " & intJahr).Range("X8:AE30").Clear Worksheets("November" & " " & intJahr).Range("X8:AE30").Clear Worksheets("Dezember" & " " & intJahr).Range("X8:AE30").Clear Sheets("Monatsvorlage").Select ' welches Tabellenblatt wird angesprochen Range("X8:AE30").Select ' welcher Bereich des Tabellenblattes wird angesprochen Application.CutCopyMode = False Selection.Copy ' was soll passieren ; hier kopieren Sheets("Januar" & " " & intJahr).Select ' ab hier kopieren in die Monatsblätter ActiveSheet.Cells(8.24).Activate ' aktive Zelle setzen Range("X8").Select ActiveSheet.Paste Sheets("Februar" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("März" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("April" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("Mai" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("Juni" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("Juli" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("August" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("September" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("Oktober" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("November" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste Sheets("Dezember" & " " & intJahr).Select ActiveSheet.Cells(8.24).Activate Range("X8").Select ActiveSheet.Paste ActiveWindow.ScrollWorkbookTabs Position:=xlFirst Sheets("Kalender").Select ' welchsel auf das Tabellenblatt "Kalender" erledigt = False End Sub
Bei "KopGelbAusMonatsvorlageInMonate" und "KopBlauAusMonatsvorlageInMonate" musste ich folgendes machen, damit die Zellen jedes mal überschrieben werden und nicht irgendwo reinkopiert wird: in den gelben und blauen Bereich kommen später u. a. Formeln rein, aberr nicht in jede Zelle.
1. Datenbereich reinigen: Zeile 25 - 36 bzw. 96 - 1072. Zelle/n aktivieren: 45, 48, 51, ...
Es arbeitet so wie gewollt, nur ist es zu kürzen oder habe ich da einen Felher, der noch nicht ersichtlich ist?
Das Macro "KopGelbUndBlauAusMonatsvorlageInMonate" habe ich nur geschrieben, damit ich auch beide Kopoervorgänge auf einmal durchführen lassen kann.
Bin gespannt was zurück kommt, ob ich etwas verbesser kann und wie die Erklärungen dazu sind.
Um die Punkte aus Post 20 kümmere ich mich, wenn das kopieren fertig und "einwandfrei" ist.Happy-Weekend dann mal.
-
Hallo Alina, wenn Du im Vba-Editor unter Extras->Optionen bei "Variablendeklaration erforderlich" ein Häkchen setzt hilft das ungemein bei der Fehlersuche.
Hier der neue Versuch, ich hab alles in Schleif(ch)en gepresst:
Code
Alles anzeigenDim fertig As Boolean Sub Neu_KopGelbUndBlauAusMonatsvorlageInMonate() ' Den gelben und blauen Bereich aus der Monatsvorlage in die Monatsblätter kopieren Application.DisplayAlerts = False 'schaltet die Bildschirmaktualisierung ab Neu_KopGelbAusMonatsvorlageInMonate Neu_KopBlauAusMonatsvorlageInMonate Application.DisplayAlerts = True End Sub Sub Neu_KopGelbAusMonatsvorlageInMonate() ' Den gelben Bereich aus der Monatsvorlage in die Monatsblätter kopieren Dim I Set wksKalender = ThisWorkbook.Sheets(1) ' Variable setzen auf Tabelle 1 / "Kalender" intJahr = wksKalender.Cells(1, 2) ' Jahr aus Zelle "A1" auslesen For I = 3 To 14 Worksheets(I).Range("A1:AE5").Clear 'Datenbereich löschen Next I Sheets("Monatsvorlage").Select ' welches Tabellenblatt wird angesprochen Range("G1:AE5").Select ' welcher Bereich des Tabellenblattes wird angesprochen Application.CutCopyMode = True Selection.Copy ' was soll passieren ; hier kopieren For I = 3 To 14 Sheets(I).Select ' ab hier kopieren in die Monatsblätter ActiveSheet.Cells(1, 7).Activate ' aktive Zelle setzen ActiveSheet.Paste Next I ' ' ActiveWindow.ScrollWorkbookTabs Position:=xlFirst Sheets("Kalender").Select ' welches auf das Tabellenblatt "Kalender" fertig = True End Sub Sub Neu_KopBlauAusMonatsvorlageInMonate() ' Den gelben Bereich aus der Monatsvorlage in die Monatsblätter kopieren Dim I Set wksKalender = ThisWorkbook.Sheets(1) ' Variable setzen auf Tabelle 1 / "Kalender" intJahr = wksKalender.Cells(1, 2) ' Jahr aus Zelle "A1" auslesen For I = 3 To 14 Worksheets(I).Range("X8:AE30").Clear 'Datenbereich löschen Next I Sheets("Monatsvorlage").Select ' welches Tabellenblatt wird angesprochen Range("X8:AE30").Select ' welcher Bereich des Tabellenblattes wird angesprochen Application.CutCopyMode = True Selection.Copy ' was soll passieren ; hier kopieren For I = 3 To 14 Sheets(I).Select ' ab hier kopieren in die Monatsblätter ActiveSheet.Cells(8, 24).Activate ' aktive Zelle setzen ActiveSheet.Paste Next I Sheets("Kalender").Select ' welches auf das Tabellenblatt "Kalender" erledigt = False End Sub
Ein schönes Wochenende
Stefan
-
Moin Stefan-Schleifchen.
Ich schaue es mir an und versuche alles zu verstehen.
Und DANKE !!! -
Ja gerne, hilft mir in Punkto Vba wieder bisschen auf die Beine zu kommen Wenn Du magst kannste auch mal ne Gliederung aufschreiben in welchen Schritten das alles ablaufen soll. Welchen Eingaben sind flexibel, welche sind fix...usw.
Viel Erfolg...
-
Moin Stefan-Schleifchen.
Also so ganz bin ich da nicht durchgestiegen, aber ich bin auf dem Weg es zumindest mehr als grob zu verstehen.
Am liebsten hättest Du ja eine Excel-Datei mit einer richtigen Vorlage. Daran arbeite ich, aber das ich nicht ganz so schnell gemacht. Ich würde nämlich gerne noch einiges kürzen, indem ich ohne Zwischenrechnungen arbeite, aber das ist nicht ganz so leicht. Wenn nicht immer jemand dazwischen ist, wäre diese Formelzusammenfügung schon abgeschlossen. Aber nach 8-9 Stunden Arbeit habe ich nicht täglich den Antrieb mich noch vor den PC zu setzen. Da wir aber seit gestern hier "Land unter" haben und sogar Katastrophenalarm ausgesprochen wurde, komme ich eh nicht zur Arbeit, so das ich mir dafür mehr Zeit nehmen kann.
Zeile 34 und 58 im Script von Beitrag 25 habe ich mal ein ' vorgestellt. Ich finde den Sinn in den beiden Zeilen nicht. Kann es sein, das die wirklich sinnlos sind? Ich möchte nichts böses sagen, nicht das Du es falsch verstehst. Wenn die sein müssen, kannst DU mir das erklären? Danke !! -
Schön guten Abend, wo ist den Katastrophenalarm? Hier in Dresden ist es sehr schön friedlich, wenn auch eisig kalt und leider schneefrei...
Zeile 34 und 58 im Script von Beitrag 25 habe ich mal ein ' vorgestellt. Ich finde den Sinn in den beiden Zeilen nicht
Da hast Du recht, aber die waren bereits in der Datei ewiger_kalender_0_0_10.xlsm. Daher hab ich die Zeilen nicht gelöscht.
Ist das Richtig so:?
1. Jahr in Tabellenblatt "Kalender" eintragen
2. Tabellenblätter für alle 12 Monate erstellen und in Monat_Jahr umbenennen
3. Bereich "Gelb" in die Tabellenblätter kopieren (sind die Daten im Bereich fest oder flexibel?)
4. Bereich "Blau" in die Tabellenblätter kopieren (sind die Daten im Bereich fest oder flexibel?)
Wenn die Daten flexibel sein sollen ist es sinnvoll über eine Userform nachzudenken und die Steuerung der Makros per Custom UI Editor in die Ribbonleiste einzubinden.
Werden immer alle 4 Aufgaben in fester Reihenfolge abgearbeitet oder ist eine Teilung notwendig?
PS: habe grad versucht Dir 'ne PN zu senden, geht nicht...oder bin ich prasslig ?
Bis später
Stefan
-
zu 1) richtig
zu 2) siehe 1
zu 3) fest? flexibel? verstehe ich gerade nicht
zu 4) siehe 3
Userform? Wäre bei Excel etwas wo ich mich erst einlesen müßte. Macht man die Userform nicht, wenn sonst schon alle einwandfrei läuft?
Die Reihenfolge ist immer die gleiche. Das es noch einzelne Module und Sub's sind, dient dazu, das ich es nachvollziehen und daraus lernen kann und möchte.
PN: muss mal schauen ob ich was bei den Einstellungen verstellt habe und es somit dann bei mir liegt. Ansonsten spreche ein einfach nochmals an. -