Hilfe bei Schichtplan

  • geschlossen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hilfe bei Schichtplan

    Morgen!

    Ich würde gerne mit Excel einen Schichtplan entwerfen.

    Dieser hat in die Tiefe die Namen der Mitarbeiter und in die Breite die 5 Arbeitstage mit Datum.

    Das jetzt alles mit der Hand zu erstellen ist sehr aufwändig, weil man an jedem Tag das Datum anpassen muss.
    Daher möchte ich ein Makro basteln, das
    -die Tabelle kopiert
    -ein neues Tabellenblatt erstellt
    -die Tabelle vom vorherigen Blatt wieder einfügt
    -den Montag um sieben Tage erhöht

    alle anderen Tage der aktuellen Woche passen sich dann automatisch an, weil sie jeweils als wert "=A1+1" haben.

    Könnt ihr mir weiterhelfen?
    Insbesondere scheitere ich an "Montag um 7 erhöhen", wie bringe ich das dem Makro bei?

    Vielen Dank,
    Lukzen
    [size=1]duude, wait...what?
    <-[COLOR="DarkRed"]Overseer - Wreckage // World of Goo // The Raconteurs - Consolers of the Lonely[/color]->[/size]
    [font="Fixedsys"]Newbies * Rules * How to Search * Users help Users * Freesoft-Board IRC
    [/font]
  • Wenn du es denn (unbedingt) per Makro erledigen willst:

    • Zelle A1 einer VAR(Integer) Montag zuweisen
    • Blatt kopieren
    • Montag um 7 erhöhen
    • Den (neuen) Wert von Montag in das neue Blatt A1 reinschreiben.


    Fertig!

    Ansonsten: Blatt per Hand kopieren und bei Blatt2 die Formel '=Blatt1!A1+7' verwenden ...
    Internette Grüße
    von der Nautilus
    cpt. Nemo
  • okay, ich hab mir das ganze jetzt mal so zamgebastelt:
    Vorhanden ist bereits eine Woche vom Schichtplan, mit dem Montag (B2) aber noch nicht ausgefüllt. Die anderen Tage haben =B2+1.

    Quellcode

    1. Sub Makro3()
    2. Dim Montag1 As String
    3. Dim Wochenzahl As String
    4. Dim NeuesDatum As Date
    5. Dim X As Integer
    6. Montag1 = InputBox("Hallo, geben Sie das Datum (Format: TT.MM.YYYY) des ersten Montags an", "Start", "02.01.2008")
    7. Debug.Print Montag1
    8. Range("B2") = CDate(Montag1) 'Setze Startdatum in die tabelle
    9. Wochenzahl = InputBox("Und nun die Anzahl der zu erstellenden Wochen:", "Wochen?", "2")
    10. X = 0
    11. For X = 1 To CInt(Wochenzahl) 'Kopiert Das aktuelle Blatt so oft wie Wochenzahl ist, nummeriert durch
    12. ActiveSheet.Copy After:=Sheets(X)
    13. Sheets(X + 1).Name = "Woche " & X + 1
    14. Range("B2") = CDate(Montag1) + (X * 7) 'Nächsten Montag festlegen, eine Woche später
    15. Next
    16. End Sub
    Alles anzeigen


    Folgende Probleme:
    1. Der User muss das Startdatum im Format DD.MM.YYYY angeben, ansonsten kommt nur Käse raus.
    2. Wie kriege ich es hin, dass das Makro bzw. die Prozedur beim Öffnen der Mappe startet?
    [size=1]duude, wait...what?
    <-[COLOR="DarkRed"]Overseer - Wreckage // World of Goo // The Raconteurs - Consolers of the Lonely[/color]->[/size]
    [font="Fixedsys"]Newbies * Rules * How to Search * Users help Users * Freesoft-Board IRC
    [/font]
  • Hallo!

    Das mit dem Format des Startdatums kann man ja ändern. Aber dazu müsstest du sagen in welcher Form das Datum eingegeben werden muss, z.B. kann dein Code ja das aktuelle .Monat.Jahr einsetzen.

    Doppelklick in VBA oben links auf "Diese Arbeitsmappe". Schreib hier deinen ganzen Code zwischen

    Quellcode

    1. Private Sub Workbook_Open()
    2. End Sub

    rein. Dann startet er automatisch.

    Gruß

    FeliX_22
  • Und das andere Problem läßt sich so lösen:

    Quellcode

    1. Sub Makro3() Dim Montag1 As String
    2. Dim Wochenzahl As String
    3. Dim NeuesDatum As Date
    4. Dim X As Integer
    5. [COLOR='Red']DO[/COLOR]
    6. Montag1 = InputBox("Hallo, geben Sie das Datum (Format: TT.MM.YYYY) des ersten Montags an", "Start", "02.01.2008")
    7. [COLOR='Red']IF ISDATE(Montag1) THEN
    8. EXIT DO
    9. ELSE
    10. MSGBOX "Bitte geben Sie das Datum im Format 'TT.MM.JJJJ' ein!"
    11. END IF
    12. LOOP[/COLOR]
    13. Debug.Print Montag1[COLOR='Red'] 'Wozu ist das gut?[/COLOR]
    14. Range("B2") = CDate(Montag1) 'Setze Startdatum in die tabelle
    15. Wochenzahl = InputBox("Und nun die Anzahl der zu erstellenden Wochen:", "Wochen?", "2")
    16. X = 0 [COLOR='Red']'Nicht notwebdig ...[/COLOR]
    17. For X = 1 To CInt(Wochenzahl) 'Kopiert Das aktuelle Blatt so oft wie Wochenzahl ist, nummeriert durch
    18. ActiveSheet.Copy After:=Sheets(X)
    19. Sheets(X + 1).Name = "Woche " & X + 1
    20. Range("B2") = CDate(Montag1) + (X * 7) 'Nächsten Montag festlegen, eine Woche später
    21. Next
    22. End Sub
    Alles anzeigen

    Ungestestet, sollte aber den Anwender so lange nerven, bis er/sie ein korrektes Datum eingibt. Natürlich kann (sollte?) man noch prüfen, ob das Datum auch wirklich ein Montag ist. WEEKDAY() ist da die VBA-Funktion.
    Internette Grüße
    von der Nautilus
    cpt. Nemo
  • das Print.Debug war noch von aus zeiten wo ich noch rumprobiert hab...

    Danke, hab durch euch eine Menge gelernt!
    Läuft jetzt alles so wie ich wollte, hab mir noch aus dem, was ihr mir beigebracht habt, ein paar schöne extrafunktionen gemacht (zB Kalenderwoche ergänzt, mehrere abfragen ob alles stimmt etc.)

    fehlt nur noch ein netter mod der hier zumacht :)
    [size=1]duude, wait...what?
    <-[COLOR="DarkRed"]Overseer - Wreckage // World of Goo // The Raconteurs - Consolers of the Lonely[/color]->[/size]
    [font="Fixedsys"]Newbies * Rules * How to Search * Users help Users * Freesoft-Board IRC
    [/font]