ich bin auf der Suche nach einer VBA-Funktion, die berechnet ob ein gegebenes Jahr ein Schaltjahr oder nicht ist. Hintergrund ist, eine Monatsübersicht zu erstellen, die für den Februar auch den 29.02. berücksichtigt.
Public Function Schaltjahr(ByVal DateYear)
If VarType(DateYear) = vbDate Then
DateYear = Year(DateYear)
End If
If (DateYear Mod 4) = 0 Then
Schaltjahr = True
Else
Schaltjahr = False
End If
End Function
Bei einer Monatsübersicht könntest Du aber auch die Tage von 1 bis 31 hochtickern lassen und wenn der Monat umspringt einfach die Schleife abbrechen.
eine kleine Korrektur:
Nach DIN gilt für den Gregorianischen Kalender folgende Regel: Ein Schaltjahr ist ein Jahr dessen Jahreszahl durch 4 ohne Rest geteilt werden kann. Ein Jahrhundert-Jahr ist aber nur dann Schaltjahr, wenn die Jahreszahl durch 400 ohne Rest geteilt werden kann.
Aus:
> Public
> Function Schaltjahr(ByVal DateYear)
> If VarType(DateYear) = vbDate Then
> DateYear = Year(DateYear)
> End If
>
> If (DateYear Mod 4) = 0 Then
> Schaltjahr = True
> Else
> Schaltjahr = False
> End If
> End Function
wird:
Function Schaltjahr(ByVal DateYear)
Schaltjahr = False
If VarType(DateYear) = vbDate Then
DateYear = Year(DateYear)
End If
If (DateYear Mod 100) = 0 Then
If (DateYear Mod 400) = 0 Then
Schaltjahr = True
End If
Else
If (DateYear Mod 4) = 0 Then
Schaltjahr = True
End If
End If
End Function