Option Explicit
Dim arrFuncs() As String
Private Sub cmdAusfuehren_Click()
Ausführen
End Sub
Private Sub lstFuncs_Change()
Me.lblInfo.Caption = arrFuncs(2, lstFuncs.ListIndex + 1)
Ausführen
End Sub
Private Sub UserForm_Initialize()
Dim ok As Boolean
Dim i As Integer
Me.txtEingabe.Text = Date
ReDim arrFuncs(2, 0)
ok = arrAdd("Day (VBA)", "Datumstag herausholen")
ok = arrAdd("Month (VBA)", "Monat herausholen")
ok = arrAdd("Year (VBA)", "Datumsjahr herausholen")
ok = arrAdd("Weekday (VBA)", "Nummer des Datumstages in der Woche - Start mit Sonntag = 1")
ok = arrAdd("Wochentagsname (UDF)", "Wochentag ermitteln: User Defined Function (UDF) Benutzerdefinierte Funktion")
ok = arrAdd("Monatssname (UDF)", "Monat ermitteln: User Defined Function (UDF) Benutzerdefinierte Funktion")
ok = arrAdd("Ausführliches Datum (UDF)", "Briefdatum: User Defined Function (UDF) Benutzerdefinierte Funktion")
ok = arrAdd("Bis heute (UDF)", "Zeitabstand zwischen Eingabedatum und heute: User Defined Function (UDF) Benutzerdefinierte Funktion")
For i = 1 To UBound(arrFuncs, 2)
Me.lstFuncs.AddItem (arrFuncs(1, i))
Next
Me.lstFuncs.Selected(0) = True
End Sub
Function arrAdd(sFunc As String, sTip As String) As Boolean
ReDim Preserve arrFuncs(2, UBound(arrFuncs, 2) + 1)
arrFuncs(1, UBound(arrFuncs, 2)) = sFunc
arrFuncs(2, UBound(arrFuncs, 2)) = sTip
arrAdd = True
End Function
Sub Ausführen()
Dim Datum As Date
Datum = CDate(Me.txtEingabe.Text)
Select Case Me.lstFuncs.ListIndex
Case 0 'day
Me.lblAusgabe.Caption = Day(Datum)
Case 1 ' month
Me.lblAusgabe.Caption = Month(Datum)
Case 2 'year
Me.lblAusgabe.Caption = Year(Datum)
Case 3 'weekday
Me.lblAusgabe.Caption = Weekday(Datum)
Case 4 'Wochentag
Me.lblAusgabe.Caption = WochentagsName(Weekday(Datum))
Case 5 'Monat
Me.lblAusgabe.Caption = Monatsname(Month(Datum))
Case 6 'Monat
Me.lblAusgabe.Caption = WochentagsName(Weekday(Datum)) & " " & Day(Datum) & ". " & Monatsname(Month(Datum)) & " " & Year(Datum)
Case 7 'Monat
Me.lblAusgabe.Caption = BisHeute(Datum)
End Select
End Sub
Function BisHeute(Datum As Date) As String
Dim Vergangenheit As Boolean
Dim Heute As Date
Dim iTage As Integer
Dim iJahreCnt As Integer
Dim iJahre As Integer
Dim sDat As String
Dim sDatTmp As String
Heute = Date
Vergangenheit = Heute > Datum
If Vergangenheit Then
iTage = Heute - Datum
Else
iTage = Datum - Heute
End If
sDat = Day(Datum) & "." & Month(Datum) & "."
iJahreCnt = 0
iJahre = Year(Datum)
Do While True
If Vergangenheit Then
sDatTmp = sDat & iJahre
iJahre = iJahre + 1
If Heute - CDate(sDatTmp) < 365 Then
Exit Do
End If
iJahreCnt = iJahreCnt + 1
Else
sDatTmp = sDat & iJahre
iJahre = iJahre - 1
If CDate(sDatTmp) - Heute < 365 Then
Exit Do
End If
iJahreCnt = iJahreCnt + 1
End If
Loop
If Vergangenheit Then
BisHeute = iJahreCnt & " Jahre, " & Heute - CDate(sDatTmp) & " Tage"
Else
BisHeute = iJahreCnt & " Jahre, " & CDate(sDatTmp) - Heute & " Tage"
End If
End Function
Private Function Monatsname(iMonat As Integer) As String
Dim s As String
Select Case iMonat
Case 1: s = "Januar"
Case 2: s = "Februar"
Case 3: s = "März"
Case 4: s = "April"
Case 5: s = "Mai"
Case 6: s = "Juni"
Case 7: s = "Juli"
Case 8: s = "August"
Case 9: s = "September"
Case 10: s = "Oktober"
Case 11: s = "November"
Case 12: s = "Dezember"
End Select
Monatsname = s
End Function
Private Function WochentagsName(iTag As Integer) As String
Dim s As String
Select Case iTag
Case 1: s = "Sonntag"
Case 2: s = "Montag"
Case 3: s = "Dienstag"
Case 4: s = "Mittwoch"
Case 5: s = "Donnerstag"
Case 6: s = "Freitag"
Case 7: s = "Samstag"
End Select
WochentagsName = s
End Function
Private Sub Form_Load()
Dim ok As Boolean
Dim i As Integer
Me.txtEingabe.Text = Date
ReDim arrFuncs(2, 0)
ok = arrAdd("Day (VBA)", "Datumstag herausholen")
ok = arrAdd("Month (VBA)", "Monat herausholen")
ok = arrAdd("Year (VBA)", "Datumsjahr herausholen")
ok = arrAdd("Weekday (VBA)", "Nummer des Datumstages in der Woche - Start mit Sonntag = 1")
ok = arrAdd("Wochentagsname (UDF)", "Wochentag ermitteln: User Defined Function (UDF) Benutzerdefinierte Funktion")
ok = arrAdd("Monatssname (UDF)", "Monat ermitteln: User Defined Function (UDF) Benutzerdefinierte Funktion")
ok = arrAdd("Ausführliches Datum (UDF)", "Briefdatum: User Defined Function (UDF) Benutzerdefinierte Funktion")
ok = arrAdd("Bis heute (UDF)", "Zeitabstand zwischen Eingabedatum und heute: User Defined Function (UDF) Benutzerdefinierte Funktion")
For i = 1 To UBound(arrFuncs, 2)
Me.lstFuncs.AddItem (arrFuncs(1, i))
Next
Me.lstFuncs.Selected(0) = True
End Sub
|