Option Explicit
Sub Button1_Click()
Dim startDatum As Date
Dim endDatum As Date
Dim index As Integer
startDatum = Range("B1")
endDatum = Range("B2")
If (endDatum <= startDatum) Then
Exit Sub
End If
index = 1
While (startDatum < endDatum)
If (Month(startDatum) = Month(endDatum) And Year(startDatum) = Year(endDatum)) Then
Range("C" & index) = DateDiff("d", startDatum, endDatum) + 1
Exit Sub
Else
Dim endeVomMonat As Date
endeVomMonat = TageImMonat(Month(startDatum), Year(startDatum)) & "." & Month(startDatum) & "." & Year(startDatum)
Range("C" & index) = DateDiff("d", startDatum, endeVomMonat) + 1
If (Month(startDatum) = 12) Then
startDatum = "1.1." & Year(startDatum) + 1
Else
startDatum = "1." & Month(startDatum) + 1 & "." & Year(startDatum)
End If
index = index + 1
End If
Wend
End Sub
Function TageImMonat(Monat As Integer, Jahr As Integer) As Integer
Select Case Monat
Case 1, 3, 5, 7, 8, 10, 12
TageImMonat = 31
Case 4, 6, 9, 11
TageImMonat = 30
Case 2
If (Jahr Mod 4 <> 0) Then
TageImMonat = 28 'nicht durch 4 teilbar = kein Schaltjahr
Else
If (Jahr Mod 100 <> 0) Then
TageImMonat = 29 'nicht durch 100 teilbar = Schaltjahr
Else
If (Jahr Mod 400 <> 0) Then
TageImMonat = 28 'nicht durch 400 teilbar = kein Schaltjahr
Else
TageImMonat = 29 'durch 400 teilbar = Schaltjahr
End If
End If
End If
End Select
End Function