Hallo Zusammen,
ich habe in der Uni folgende Aufgabe bekommen:
Gib ein Datum in a1, b1 und c1 ein:
z.B 22 11 2018
und gib den WochenTag in a3 bzw. a4 aus.
Die Berechnugnsformel für den Tag ist vorgegeben:
--> Wenn WT Jan oder Februar ist, dann
wird um Jahr dekrementieren und Monat um 12 erhöhen
WT = (1 + T + (13 * M + 3) / 5 + J + J / 4 - J / 100 + J / 400) Mod 7
1= Montag,
2=Dienstag
etc.
Aus 0 WIrd eine 7 Für Sonntag.
Leider ist WT immer falsch bzw. bis zum 01.7.2017 richtig danach um 1 zu hoch.
PLEASE HELP
Hab das Jetzt folgendermaßen versucht zu lösen:
Private Function WTNumber(T As Integer, M As Integer, J As Integer) As Integer
Dim WT As Integer
If M = 1 Or M = 2 Then
J = J - 1
M = M + 12
End If
WT = (1 + T + (13 * M + 3) / 5 + J + J / 4 - J / 100 + J / 400) Mod 7
If WT = 0 Then
WT = 7
End If
WTNumber = WT
End Function
Private Function WTlang(WT As Integer) As String
Select Case WT
Case 1
WTlang = "Montag"
Case 2
WTlang = "Dienstag"
Case 3
WTlang = "Mittwoch"
Case 4
WTlang = "Donnerstag"
Case 5
WTlang = "Freitag"
Case 6
WTlang = "Samstag"
Case 7
WTlang = "Sonntag"
End Select
End Function
Function WTkurz(WT As Integer) As String
Select Case WT
Case 1
WTkurz = "Mo."
Case 2
WTkurz = "Di."
Case 3
WTkurz = "Mi."
Case 4
WTkurz = "Do."
Case 5
WTkurz = "Fr."
Case 6
WTkurz = "Sa."
Case 7
WTkurz = "So."
End Select
End Function
Private Function Los()
Dim T As Integer
Dim M As Integer
Dim J As Integer
Dim W As Integer
T = [a1].Value
M = [b1].Value
J = [c1].Value
W = WTNumber(T, M, J)
[a3].Value = WTkurz(W)
[a4].Value = WTlang(W)
[a8].Value = T
[a9].Value = M
[a10].Value = J
[a11].Value = W
End Function
Sub Berechnen()
Los
End Sub
|