Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen | VB-Versionen: VB4, VB5, VB6 | 21.08.01 |
Anzahl der Tage eines Monats Eine Funktion, welche die Anzahl der Tage eines bestimmten Monats zurückgibt. | ||
Autor: Matthias Kozlowski | Bewertung: | Views: 26.491 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Manchmal ist es notwenig zu wissen, wieviele Tage ein bestimmter Monat eines bestimmten Jahres hat. Soll z.B. ein DatePicker auf den letzten Tag des aktuellen Monats voreingestellt werden, gibt es dafür keine vorgefertigte einfache Lösung.
Hier kann dann die folgende Funktion DayOfMonthCount benutzt werden:
Public Function DayOfMonthCount(plMonth As Long, _ plYear As Long) As Long ' Gibt die Anzahl der Tage des übergebenen Monats ' im übergebenen Jahr zurück ' Bei ungültigen Eingabewerten wird 0 zurückgegeben Dim dDate As Date On Error GoTo ErrHandler ' Die Hilfs-Datumsvariable mit dem ersten Tag des ' angegebenen Monats füllen dDate = CDate(plYear & "-" & plMonth & "-01") ' Von diesem Datum einen Monat vor und dann ' einen Tag zurück gehen ' Damit landen wir auf dem letzten Tag des ' übergebenen Monats DayOfMonthCount = Day(DateAdd("d", -1, _ DateAdd("m", 1, dDate))) Exit Function ErrHandler: DayOfMonthCount = 0 End Function
Die Funktion benötigt zwei Parameter plMonth und plYear vom Typ Long, welche den Monat und das Jahr bestimmen (das Jahr ist für den Monat Februar von Bedeutung - Schaltjahre). Die Funktion gibt die Anzahl der Tage des Monats zurück - ebenfalls als eine Long-Zahl. Die möglichen Rückgabewerte sind: 28, 29, 30 und 31. Bei fehlerhaften Parametern (z.B. plMonth = 13) wird 0 zurückgegeben.
Beispiele:
' gibt 29 zurück DayOfMonthCount(2, 2000) ' gibt die Anzahl der Tage des ' aktuellen Monats zurück DayOfMonthCount(Month(Date), Year(Date))
Die Vorbelegung für einen DatePicker, der den letzten Tag des folgenden Monats anzeigen soll, kann z.B. folgendermaßen aussehen:
With DTPicker1 ' Zuerst den 1. einstellen, damit keine Fehler entstehen .Day = 1 ' Der nächste Monat nach Dezember ist wieder Januar If Month(Date) = 12 Then .Month = 1 .Year = Year(Date) + 1 Else .Month = Month(Date) + 1 .Year = Year(Date) End If ' Jetzt auf den letzten Tag des Monats gehen .Day = DayOfMonthCount(.Month, .Year) End With