Je dnes utorok alebo streda?
Vášou úlohou je na základe dátumu zistiť deň v týždní a následne vypísať, či je pondelok, utorok alebo iný deň. Na
zistenie dňa v týždní použijeme funkciu WeekDay. Ako dátum použijeme funkciu Now.
Sub denVTyzdni
Dim retazec As string
Dim den As Integer
den = WeekDay(Now)
If den = 1 Then
retazec = "nedela"
ElseIf den = 2 Then
retazec = "pondelok"
ElseIf den = 3 Then
retazec = "utorok"
ElseIf den = 4 Then
retazec = "streda"
ElseIf den = 5 Then
retazec = "stvrtok"
ElseIf den = 6 Then
retazec = "piatok"
ElseIf den = 7 Then
retazec = "sobota"
Else retazec = "chyba"
End If
MsgBox "Aktualne je " & retazec
End Sub
Zisťujeme aktuálny deň v týždní
Návratová hodnota funkcie WeekDay je celé číslo v intervale od 1 do 7 predstavujúc konkrétny deň v týždní. Všimnite si, že číslo 1 nepredstavuje pondelok podľa našej každodennej skúseností, ale nedeľu!
Aby sme otestovali využitie funkcie WeekDay pri dvoch rôznych formátov, tak ju zakomponujeme do vlastnej
funkcie.
Sub denVTyzdni REM
Dim retazec As String
Dim den As Integer
On Error Resume Next
den = WeekDay(43026)
retazec = retazec & "Den v tyzdni datumu " & CDate(43026) & " je " & testDnaVTyzdni(den) & Chr(10)
den = WeekDay("03.05.2018")
retazec = retazec & "Den v tyzdni datumu " & CDate("03.05.2018") & " je " & testDnaVTyzdni(den) & Chr(10)
MsgBox retazec
End Sub
Function testDnaVTyzdni(den) As String
If den = 1 Then
testDnaVTyzdni = "nedela"
ElseIf den = 2 Then
testDnaVTyzdni = "pondelok"
ElseIf den = 3 Then
testDnaVTyzdni = "utorok"
ElseIf den = 4 Then
testDnaVTyzdni = "streda"
ElseIf den = 5 Then
testDnaVTyzdni = "stvrtok"
ElseIf den = 6 Then
testDnaVTyzdni = "piatok"
ElseIf den = 7 Then
testDnaVTyzdni = "sobota"
Else testDnaVTyzdni = "chyba"
End If
End Function
Zisťujeme deň v týždní v dvoch formátov
dátumu
Zadali sme čas v dvoch tvaroch. Prvý tvár den = WeekDay(43026) známy pri funkcii CDate a
druhý tvár vo formáte lokálneho nastavenia dátumu: den = WeekDay("03.05.2018")
Daj mi číslo a ja ti poviem, kto si!
Ak chceme zistiť z dátumu deň v týždní a vhodne ho napr. pre používateľa aplikácie ukázať, tak miesto čísla zobrazíme napr. pondelok, utorok a pod... Zatiaľ sme to robili pracne v našej definovanej funkcii.
Function testDnaVTyzdni(den) As String
If den = 1 Then
testDnaVTyzdni = "nedela"
ElseIf den = 2 Then
testDnaVTyzdni = "pondelok"
ElseIf den = 3 Then
testDnaVTyzdni = "utorok"
ElseIf den = 4 Then
testDnaVTyzdni = "streda"
ElseIf den = 5 Then
testDnaVTyzdni = "stvrtok"
ElseIf den = 6 Then
testDnaVTyzdni = "piatok"
ElseIf den = 7 Then
testDnaVTyzdni = "sobota"
Else testDnaVTyzdni = "chyba"
End If
End Function
Avšak existuje funkcia WeekDayName, ktorá nám miesto písania toľkého kódu vráti deň v týždni v lokálnom
jazyku. Takže žiadneho Saturday sa nemusíte obávať.
Sub denVTyzdni Dim retazec As String Dim den As Integer retazec = retazec & "Den v tyzdni datumu " & CDate(42278) & " je " & WeekDayName(WeekDay(42278)) & " a v skratenej volbe: " & WeekDayName(WeekDay(42278),True) MsgBox retazec End Sub
Zobrazujeme deň v týždní
Argumentom funkcie WeekDayName je číslo, ktoré predstavuje konkrétny deň v týždní. To číslo získame
funkciou WeekDay. Ak chceme len skratku dňa, tak využijeme druhý argument a nastavíme ho na
True.
Rovnako ako v pri získavaní dňa v týždni postupujeme pri zisťovaní mesiaca v roku.
Sub mesiacVRoku Dim retazec As String Dim den As Integer retazec = retazec & "Mesiac v roku pre datum " & CDate(43098.25) & " je " & MonthName(Month(43098.25)) & " a v skratenej volbe: " & MonthName(Month(43098.25),True) MsgBox retazec End Sub
Zobrazujeme mesiac v roku
V skrátenej verzii je mesiac vyjadrený ako rímska číslica.
Naučte sa zisťovať z dátumu deň v týždní a efektívnejšie zobrazovať konkrétny mesiac v roku. Reč bude o funkciách
WeekDay, WeekDayName a MonthName.









