VBA - KALENDER-FUNKTIONEN

 

Public Function DATEI_DATUM(DateiName As String) As Date
' liefert Datum/Zeit des letztmaligen öffnens einer Datei
DATEI_DATUM = FileDateTime(DateiName)
End Function

Public Function DATUM_JA(WDat As Variant) As String
' gibt JA zurück, falls Typ = Datum, sonst NEIN
If IsDate(WDat) Then DATUM_JA = "JA" Else DATUM_JA = "NEIN"
End Function

Public Function JAHRESZEIT(Optional WMonat As Variant) As String
If IsMissing(WMonat) Then ' wenn Parameter übergeben wurde
    WMonat = Month(Date) ' Zuweisung des aktuellen Monats
Else
    WMonat = Month(WMonat) ' Zuweisung des übergebenen Monats
End If
Select Case WMonat ' Monatsfälle abklären
        Case 3, 4, 5
            JAHRESZEIT = "Frühling"
    Case 6, 7, 8
        JAHRESZEIT = "Sommer"
    Case 9, 10, 11
        JAHRESZEIT = "Herbst"
    Case 12, 1, 2
        JAHRESZEIT = "Winter"
End Select
End Function

Public Function STD_MIN_SEK(WSTD As Integer, Optional WMIN, Optional WSEK) As Date
' Übergabe von Stunden, Minuten, Sekunden als Zahl
' Rückgabe von Zeitvariablen
If IsMissing(WMIN) Then WMIN = 0
If IsMissing(WSEK) Then WSEK = 0
 STD_MIN_SEK = TimeSerial(WSTD, WMIN, WSEK)
End Function

Public Function HEUTE() As Date
' gibt aktuelles Datum und Uhrzeit zurück
HEUTE = Now()
End Function

Public Function TAGESNAME(WDatum As Date) As String
Dim TAG As Integer
TAG = WeekDay(WDatum)
Select Case TAG
    Case 1
        TAGESNAME = "Sonntag"
    Case 2
        TAGESNAME = "Montag"
    Case 3
        TAGESNAME = "Dienstag"
    Case 4
        TAGESNAME = "Mittwoch"
    Case 5
        TAGESNAME = "Donnerstag"
    Case 6
        TAGESNAME = "Freitag"
    Case 7
        TAGESNAME = "Samstag"
End Select
End Function

Public Function QUARTAL(WDatum As Date) As String
QUARTAL = Int(Month(WDatum) / 3 + 0.99)
End Function

Public Function HALBJAHR(WDatum As Date) As String
HALBJAHR = Int(Month(WDatum) / 6 + 0.99)
End Function


Public Function JAHRZEHNT(WDatum As Date) As String
JAHRZEHNT = Int(Year(WDatum) / 10 + 0.99)
End Function

Public Function JAHRHUNDERT(WDatum As Date) As String
JAHRHUNDERT = Int(Year(WDatum) / 100 + 0.99)
End Function

Public Function JAHRTAUSEND(WDatum As Date) As String
JAHRTAUSEND = Int(Year(WDatum) / 1000 + 0.99)
End Function

Public Function DATUM_WEITER(WTyp As String, WAnz As Integer, _
WDatum As Date) As Date
' Weiterrechnen von Datumswerten in vorgegebenen Einheiten
' z.B.: DATUM_WEITER("MONAT",2,"16.01.15")
' rechnet 2 Monate ab 16.01.15 weiter
Select Case WTyp ' Typen-Fall-Unterscheidung
    Case "JAHR", "J"
        DATUM_WEITER = DateAdd("yyyy", WAnz, WDatum)
    Case "QUARTAL", "Q"
        DATUM_WEITER = DateAdd("q", WAnz, WDatum)
    Case "MONAT", "MON", "M"
        DATUM_WEITER = DateAdd("m", WAnz, WDatum)
    Case "JAHRESTAG", "JT"
        DATUM_WEITER = DateAdd("y", WAnz, WDatum)
    Case "TAG", "T", "TG", "TAGE"
        DATUM_WEITER = DateAdd("d", WAnz, WDatum)
    Case "WOCHENTAG", "WT"
        DATUM_WEITER = DateAdd("w", WAnz, WDatum)
    Case "WOCHE", "W", "WO", "WOCHEN"
        DATUM_WEITER = DateAdd("ww", WAnz, WDatum)
    Case "STUNDE", "S", "STD"
        DATUM_WEITER = DateAdd("h", WAnz, WDatum)
    Case "MINUTE", "MIN"
        DATUM_WEITER = DateAdd("n", WAnz, WDatum)
    Case "SEKUNDE", "S", "SEK"
        DATUM_WEITER = DateAdd("s", WAnz, WDatum)
End Select
End Function

Public Function DATUM_DIFFERENZ(WDatum1 As Date, WDatum2 As Date, _
Optional WTyp As Variant) As Integer
' liefert Diffenrenz in Typeneinheit als Zahl zurück
' z.B. Tages-Differenz bei DATUM_DIFFERENZ("01.05.16","05.06.15","TAG")
Dim DTyp As String
DTyp = IIf(Not IsMissing(WTyp), WTyp, "TAG")
Select Case DTyp
    Case "JAHR", "J"
        DATUM_DIFFERENZ = DateDiff("yyyy", WDatum1, WDatum2)
    Case "QUARTAL", "Q"
        DATUM_DIFFERENZ = DateDiff("q", WDatum1, WDatum2)
    Case "MONAT", "MON"
        DATUM_DIFFERENZ = DateDiff("m", WDatum1, WDatum2)
    Case "JAHRESTAG", "JT"
        DATUM_DIFFERENZ = DateDiff("y", WDatum1, WDatum2)
    Case "TAG", "T", "TG"
        DATUM_DIFFERENZ = DateDiff("d", WDatum1, WDatum2)
    Case "WOCHENTAG", "WT"
        DATUM_DIFFERENZ = DateDiff("w", WDatum1, WDatum2)
    Case "WOCHE", "W", "WO"
        DATUM_DIFFERENZ = DateDiff("ww", WDatum1, WDatum2)
    Case "STUNDE", "S", "STD"
        DATUM_DIFFERENZ = DateDiff("h", WDatum1, WDatum2)
    Case "MINUTE", "MIN"
        DATUM_DIFFERENZ = DateDiff("n", WDatum1, WDatum2)
    Case "SEKUNDE", "S", "SEK"
        DATUM_DIFFERENZ = DateDiff("s", WDatum1, WDatum2)
End Select
End Function

Public Function MONATSNAME(WDatum As Date) As String
Dim MONAT As Integer
MONAT = Month(WDatum)
Select Case MONAT
    Case 1
        MONATSNAME = "Januar"
    Case 2
        MONATSNAME = "Februar"
    Case 3
        MONATSNAME = "März"
    Case 4
        MONATSNAME = "April"
    Case 5
        MONATSNAME = "Mai"
    Case 6
        MONATSNAME = "Juni"
     Case 7
        MONATSNAME = "Juli"
    Case 8
        MONATSNAME = "August"
    Case 9
        MONATSNAME = "September"
    Case 10
        MONATSNAME = "Oktober"
    Case 11
        MONATSNAME = "November"
    Case 12
        MONATSNAME = "Dezember"
End Select
End Function

Public Function ZEIT(Optional WZeit As Variant) As Date
If IsMissing(WZeit) Then
    ZEIT = Time()
Else
    ZEIT = Time(WZeit)
End If
End Function

Public Function TAG(Optional WDatum As Date) As Integer
If IsMissing(WDatum) Then
    TAG = Day(Date)
Else
    TAG = Day(WDatum)
End If
End Function

Public Function MONAT(Optional WDatum As Variant) As Integer
If IsMissing(WDatum) Then
    MONAT = Month(Date)
Else
    MONAT = Month(WDatum)
End If
End Function

Public Function JAHR(Optional WDatum As Variant) As Integer
If IsMissing(WDatum) Then
    JAHR = Year(Date)
Else
    JAHR = Year(WDatum)
End If
End Function

Public Function STUNDE(Optional WZeit As Variant) As Integer
If IsMissing(WZeit) Then
    STUNDE = Hour(Time())
Else
    STUNDE = Hour(WZeit)
End If
End Function

Public Function SEKUNDE(Optional WZeit As Variant) As Integer
If IsMissing(WZeit) Then
    SEKUNDE = Second(Time())
Else
    SEKUNDE = Second(WZeit)
End If
End Function