Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datum & KW fortlaufend auf mehrere Sheets

Datum & KW fortlaufend auf mehrere Sheets
28.10.2016 06:55:04
Laci
Hallo zusammen,
ich komme bei meinem Problem nicht weiter da ich mich mich VBA nur bedingt auskenne.
Ich habe eine Tabelle mit 52 Sheets (Wochen) in jeden Sheet möchte ich fortlaufend die Kalenderwoche in A5 haben und dann noch das Datum von Montag bis Freitag in A11 / A17 / A23 / A29 / A35.
Bekomme das nicht hin, habe schon im Internet recherchiert und keine passende Lösung gefunden.
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum & KW fortlaufend auf mehrere Sheets
28.10.2016 07:59:00
baschti007
Ohne eine Bsp. Mappe kann ich dir das vorschlagen
Gruß Basti
Sub Kalenderwoche()
Dim ThisSheet As Workbook
Dim d As Long, i As Long
Set ThisSheet = ThisWorkbook
StartDatum = "01.01.2016"
With ThisWorkbook
For i = 1 To .Sheets.Count
With .Sheets(i)
Do While Not i = DINKw(DateAdd("d", d, StartDatum))
d = d + 1
Loop
.Range("A10") = "KW " & DINKw(DateAdd("d", d, StartDatum))
.Range("A11") = DateAdd("d", d, StartDatum)
.Range("A12") = DateAdd("d", d + 1, StartDatum)
.Range("A13") = DateAdd("d", d + 2, StartDatum)
.Range("A14") = DateAdd("d", d + 3, StartDatum)
.Range("A15") = DateAdd("d", d + 4, StartDatum)
End With
Next
End With
End Sub

Anzeige
AW: Datum & KW fortlaufend auf mehrere Sheets
28.10.2016 08:02:00
baschti007
Oh hatte die Funktion vergessen
Gruß Basti
Function DINKw(Datum As Date) As Integer
Dim lngT As Long
lngT = DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1)
DINKw = ((Datum - lngT - 3 + (Weekday(lngT) + 1) Mod 7)) \ 7 + 1
End Function

Anzeige
AW: Datum & KW fortlaufend auf mehrere Sheets
28.10.2016 08:13:33
Laci
darf ich dir die Tabelle mal hochladen?
AW: Datum & KW fortlaufend auf mehrere Sheets
28.10.2016 08:23:01
Matthias
Hallo
Hier mal ein Bsp. ohne VBA
https://www.herber.de/bbs/user/109070.xlsx
Die restl. KWs zu erstellen(Kopieren/Einfügen,Anpassen) sind Fleißarbeit für Dich
und natürlich kannst du deine Mappe hochladen ;-)
Gruß Matthias
Anzeige
AW: Datum & KW fortlaufend auf mehrere Sheets
28.10.2016 09:15:43
baschti007
Die Datei die du hoch geladen hast einfach die Tabelle in Muster umbenennen
und dann den code Kalenderwoche starten
Gruß Basti
Function DINKw(Datum As Date) As Integer
Dim lngT As Long
lngT = DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1)
DINKw = ((Datum - lngT - 3 + (Weekday(lngT) + 1) Mod 7)) \ 7 + 1
End Function
Sub Kalenderwoche()
Dim ThisSheet As Workbook
Dim d As Long, i As Long
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.DisplayAlerts = False
StartDatum = "01.01.2016"
With ThisWorkbook
For Each ws In .Worksheets
If Not ws.Name Like "Muster" Then
ws.Delete
End If
Next
For i = 1 To 52
Sheets("Muster").Copy Before:=Sheets(ThisWorkbook.Sheets.Count)
With .Sheets(i)
Do While Not i = DINKw(DateAdd("d", d, StartDatum))
d = d + 1
Loop
.Name = "KW " & DINKw(DateAdd("d", d, StartDatum))
.Range("A5") = DINKw(DateAdd("d", d, StartDatum))
.Range("A8") = Format(DateAdd("d", d, StartDatum), "DDDD")
.Range("A11") = DateAdd("d", d, StartDatum)
.Range("A14") = Format(DateAdd("d", d + 1, StartDatum), "DDDD")
.Range("A17") = DateAdd("d", d + 1, StartDatum)
.Range("A20") = Format(DateAdd("d", d + 2, StartDatum), "DDDD")
.Range("A23") = DateAdd("d", d + 2, StartDatum)
.Range("A26") = Format(DateAdd("d", d + 3, StartDatum), "DDDD")
.Range("A29") = DateAdd("d", d + 3, StartDatum)
.Range("A32") = Format(DateAdd("d", d + 4, StartDatum), "DDDD")
.Range("A35") = DateAdd("d", d + 4, StartDatum)
d = d + 7
End With
Next
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Datum & KW fortlaufend auf mehrere Sheets
28.10.2016 10:35:03
Laci
Jaaaaaaaaaaaaa, es funktioniert.Vielen,vielen Dank,das ist mir eine so große Hilfe.
AW: Datum & KW fortlaufend auf mehrere Sheets
28.10.2016 12:20:28
baschti007
Bitte Kein Problem
Gruß basti

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datum und KW fortlaufend auf mehrere Sheets in Excel


Schritt-für-Schritt-Anleitung

Um fortlaufende Kalenderwochen und Daten in mehreren Excel-Tabellenblättern zu erstellen, kannst Du den folgenden VBA-Code verwenden. Dieser Code setzt voraus, dass Du mit Excel 2016 oder einer neueren Version arbeitest.

  1. Öffne Excel und erstelle eine neue Arbeitsmappe.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.
  4. Kopiere und füge den folgenden Code in das Modul ein:
Function DINKw(Datum As Date) As Integer
    Dim lngT As Long
    lngT = DateSerial(Year(Datum + (8 - Weekday(Datum)) Mod 7 - 3), 1, 1)
    DINKw = ((Datum - lngT - 3 + (Weekday(lngT) + 1) Mod 7)) \ 7 + 1
End Function

Sub Kalenderwoche()
    Dim ThisSheet As Workbook
    Dim d As Long, i As Long
    Dim ws As Worksheet
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    StartDatum = "01.01.2016"

    With ThisWorkbook
        For Each ws In .Worksheets
            If Not ws.Name Like "Muster" Then
                ws.Delete
            End If
        Next

        For i = 1 To 52
            Sheets("Muster").Copy Before:=Sheets(ThisWorkbook.Sheets.Count)
            With .Sheets(i)
                Do While Not i = DINKw(DateAdd("d", d, StartDatum))
                    d = d + 1
                Loop

                .Name = "KW " & DINKw(DateAdd("d", d, StartDatum))
                .Range("A5") = DINKw(DateAdd("d", d, StartDatum))
                .Range("A11") = DateAdd("d", d, StartDatum)
                .Range("A17") = DateAdd("d", d + 1, StartDatum)
                .Range("A23") = DateAdd("d", d + 2, StartDatum)
                .Range("A29") = DateAdd("d", d + 3, StartDatum)
                .Range("A35") = DateAdd("d", d + 4, StartDatum)
                d = d + 7
            End With
        Next
    End With

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Stelle sicher, dass Du ein Blatt mit dem Namen "Muster" hast, von dem die neuen Blätter kopiert werden.
  3. Führe das Makro Kalenderwoche aus. Jetzt solltest Du 52 Tabellenblätter mit fortlaufenden Kalenderwochen und Daten in den angegebenen Zellen haben.

Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9: Index außerhalb des erlaubten Bereichs"

    • Lösung: Überprüfe, ob das Blatt "Muster" existiert. Der Code benötigt dieses Blatt als Vorlage.
  • Fehler: "Der Code funktioniert nicht, die Zellen bleiben leer"

    • Lösung: Stelle sicher, dass Du den VBA-Code in einem Modul eingefügt hast und dass die Arbeitsmappe als xlsm gespeichert ist, um Makros zuzulassen.

Alternative Methoden

Falls Du ohne VBA arbeiten möchtest, kannst Du auch manuell Daten und Wochennummern in den Zellen eingeben. Du kannst die Kalenderwoche auch mit der KALENDERWOCHE-Funktion in Excel berechnen und die Daten mit der HEUTE-Funktion dynamisch aktualisieren.


Praktische Beispiele

  • Beispiel für die Eingabe von Daten in Zellen:

    • Wenn Du in Zelle A11 den Montag der ersten Woche 2016 einträgst, könntest Du in A12 bis A35 die restlichen Wochentage durch Drag & Drop ausfüllen.
  • Verwendung der KALENDERWOCHE-Funktion:

=KALENDERWOCHE(A11;2)

Hiermit wird die Kalenderwoche für das Datum in Zelle A11 berechnet.


Tipps für Profis

  • Nutze Benutzerdefinierte Formate in Excel, um das Datum nach Deinen Wünschen anzuzeigen (z.B. "dd.mm.yyyy").
  • Verwende Datenvalidierung, um sicherzustellen, dass Benutzer nur gültige Daten in die Zellen eingeben.
  • Automatisiere Deinen Workflow weiter, indem Du die Daten in einer einzigen Datei oder auf einem zentralen Server speicherst, um den Zugriff zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die Kalenderwoche für ein anderes Jahr berechnen? Um die Kalenderwoche für ein anderes Jahr zu berechnen, ändere einfach die StartDatum-Variable im VBA-Code auf das gewünschte Jahr.

2. Kann ich den Code auch in Google Sheets verwenden? Der gegebene Code ist spezifisch für Excel VBA. Google Sheets unterstützt jedoch Apps Script, mit dem Du ähnliche Funktionen erstellen kannst, jedoch in JavaScript-Syntax.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige