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.