Syntax Fehler VBA
13.11.2024 09:38:46
An
Sub ErstelleUrlaubsplan()
' Variablen deklarieren
Dim ws As Worksheet
Dim i As Integer
Dim datum As Date
Dim startDatum As Date
Dim endDatum As Date
Dim urlaub As Variant
Dim schulferien(5, 1) As Date ' 2D-Array für Schulferien
Dim ferienStart As Date
Dim ferienEnde As Date
Dim urlaubDatum As Variant
' Neues Arbeitsblatt erstellen
Set ws = ThisWorkbook.Sheets.Add
ws.Name = "Urlaubsplan 2025"
' Titel der Spalten
ws.Cells(1, 1).Value = "Datum"
ws.Cells(1, 2).Value = "Wochentag"
ws.Cells(1, 3).Value = "Astrid"
ws.Cells(1, 4).Value = "Simon"
ws.Cells(1, 5).Value = "Laura"
ws.Cells(1, 6).Value = "Schulferien Niedersachsen"
ws.Cells(1, 7).Value = "Bemerkungen"
' Startdatum für 2025
startDatum = DateSerial(2025, 1, 1)
' Schulferien in Niedersachsen (Start- und Enddaten)
schulferien(0, 0) = DateSerial(2025, 2, 2): schulferien(0, 1) = DateSerial(2025, 2, 14) ' Winterferien
schulferien(1, 0) = DateSerial(2025, 4, 7): schulferien(1, 1) = DateSerial(2025, 4, 18) ' Osterferien
schulferien(2, 0) = DateSerial(2025, 5, 26): schulferien(2, 1) = DateSerial(2025, 6, 7) ' Pfingstferien
schulferien(3, 0) = DateSerial(2025, 6, 21): schulferien(3, 1) = DateSerial(2025, 8, 2) ' Sommerferien
schulferien(4, 0) = DateSerial(2025, 10, 6): schulferien(4, 1) = DateSerial(2025, 10, 18) ' Herbstferien
schulferien(5, 0) = DateSerial(2025, 12, 22): schulferien(5, 1) = DateSerial(2025, 12, 31) ' Weihnachtsferien
' Für jedes Datum im Jahr 2025
For i = 0 To 364
datum = startDatum + i
' Datum und Wochentag einfügen
ws.Cells(i + 2, 1).Value = datum
ws.Cells(i + 2, 2).Value = Format(datum, "dddd")
' Ferien und Urlaubsmarkierungen
ws.Cells(i + 2, 6).Value = ""
ws.Cells(i + 2, 3).Value = ""
ws.Cells(i + 2, 4).Value = ""
ws.Cells(i + 2, 5).Value = ""
' Schulferien überprüfen und markieren
For j = 0 To 5
ferienStart = schulferien(j, 0)
ferienEnde = schulferien(j, 1)
If datum >= ferienStart And datum = ferienEnde Then
ws.Cells(i + 2, 6).Value = "Ferien"
Exit For
End If
Next j
' Urlaubszeiten für Astrid (2D-Array)
urlaub = _
Array( _
Array(DateSerial(2025, 12, 22), DateSerial(2025, 12, 31)), ' Astrid Weihnachten
Array(DateSerial(2025, 12, 15), DateSerial(2025, 12, 19)), ' Astrid Dezember
Array(DateSerial(2025, 11, 21), DateSerial(2025, 11, 21)), ' Astrid November
Array(DateSerial(2025, 10, 13), DateSerial(2025, 10, 17)), ' Astrid Herbst
Array(DateSerial(2025, 8, 4), DateSerial(2025, 8, 8)), ' Astrid Sommer
Array(DateSerial(2025, 7, 2), DateSerial(2025, 7, 4)), ' Astrid Juli
Array(DateSerial(2025, 4, 14), DateSerial(2025, 4, 17)), ' Astrid April
Array(DateSerial(2025, 1, 30), DateSerial(2025, 1, 30)) ' Astrid Januar
)
' Urlaub für Astrid eintragen
For Each urlaubDatum In urlaub
If datum >= urlaubDatum(0) And datum = urlaubDatum(1) Then
ws.Cells(i + 2, 3).Value = "Urlaub"
Exit For
End If
Next urlaubDatum
' Urlaubszeiten für Simon (2D-Array)
urlaub = _
Array( _
Array(DateSerial(2025, 12, 22), DateSerial(2025, 12, 24)), ' Simon Weihnachten
Array(DateSerial(2025, 7, 21), DateSerial(2025, 7, 25)), ' Simon Sommer
Array(DateSerial(2025, 6, 23), DateSerial(2025, 6, 27)), ' Simon Juni
Array(DateSerial(2025, 4, 7), DateSerial(2025, 4, 11)), ' Simon April
Array(DateSerial(2025, 1, 2), DateSerial(2025, 1, 3)), ' Simon Januar
Array(DateSerial(2025, 4, 14), DateSerial(2025, 4, 17)), ' Simon April
Array(DateSerial(2025, 6, 2), DateSerial(2025, 6, 6)) ' Simon Juni
)
' Urlaub für Simon eintragen
For Each urlaubDatum In urlaub
If datum >= urlaubDatum(0) And datum = urlaubDatum(1) Then
ws.Cells(i + 2, 4).Value = "Urlaub"
Exit For
End If
Next urlaubDatum
' Urlaubszeiten für Laura (2D-Array)
urlaub = _
Array( _
Array(DateSerial(2025, 12, 29), DateSerial(2025, 12, 31)), 'Laura Weihnachten
Array(DateSerial(2025, 9, 15), DateSerial(2025, 9, 19)), ' Laura September
Array(DateSerial(2025, 7, 14), DateSerial(2025, 7, 18)), ' Laura Juli
Array(DateSerial(2025, 5, 30), DateSerial(2025, 5, 30)), ' Laura Mai
Array(DateSerial(2025, 4, 22), DateSerial(2025, 4, 25)), ' Laura April
Array(DateSerial(2025, 4, 14), DateSerial(2025, 4, 17)), ' Laura April
Array(DateSerial(2025, 1, 2), DateSerial(2025, 1, 3)) ' Laura Januar
)
' Urlaub für Laura eintragen
For Each urlaubDatum In urlaub
If datum >= urlaubDatum(0) And datum = urlaubDatum(1) Then
ws.Cells(i + 2, 5).Value = "Urlaub"
Exit For
End If
Next urlaubDatum
Next i
' Formatieren der Tabelle
ws.Columns("A:G").AutoFit
ws.Range("A1:G1").Font.Bold = True
ws.Range("A1:G1").HorizontalAlignment = xlCenter
ws.Rows("2:366").HorizontalAlignment = xlCenter
MsgBox "Urlaubsplan für 2025 wurde erfolgreich erstellt!"
End Sub
Anzeige