1 1 1 1 1 1 1 1 1 1 Rating 4.75 (2 Votes)

Problemstellung:

Für 32Bit und 64Bit Office Versionen

Wie berechnet man die Anzahl der Wochentage (Montage, Dienstage usw.) für einen Monat?

Public Enum Wochentag
    Montag = 1
    Dienstag = 2
    Mittwoch = 3
    Donnerstag = 4
    Freitag = 5
    Samstag = 6
    Sonntag = 7
End Enum
Function WTage(dtDate As Date, Optional WT As Wochentag = 1) As Integer
    Dim dtStart As Date, n As Integer
    Dim i As Integer
    dtStart = DateSerial(Year(dtDate), Month(dtDate), 1)
    n = DateSerial(Year(dtStart), Month(dtStart) + 1, 1) - dtStart
    For i = 1 To n
        If Weekday(dtStart - 1 + i, vbMonday) = WT Then
            WTage = WTage + 1
        End If
    Next i
End Function 

Aufruf z.B.:

MsgBox "Montag: " & WTage(Date, Montag) & vbNewLine & "Dienstag: " & WTage(Date, Dienstag) _
    & vbNewLine & "Mittwoch: " & WTage(Date, Mittwoch) & vbNewLine & _
    "Donnerstag: " & WTage(Date, Donnerstag) _
    & vbNewLine & "Freitag: " & WTage(Date, Freitag) & vbNewLine & _
    "Samstag: " & WTage(Date, Samstag) _
    & vbNewLine & "Sonntag: " & WTage(Date, Sonntag), , _
    "Anzahl der Wochentage für " & Month(Date) & "-" & Year(Date)

Ergebnis:

 

Ähnliche Artikel