Funkcie Year, Month a Day
Ako už z prekladu z angličtiny do slovenčiny vyplýva, pôjde o funkcie, ktoré vracajú rok, mesiac alebo deň. Ukážeme si príklad pre každú jednotlivú funkciu, aby sme videli ich správanie. No skôr než dôjdeme k príkladom, ukážme si syntax k dotyčným funkciám.
Year(číslo alebo podporovaný formát dátumu)
Month(číslo alebo podporovaný formát dátumu)
Day(číslo alebo podporovaný formát dátumu)
1. príklad: Testujeme správanie funkcie Year
Sub functionYear REM začiatok makra On Error Resume Next REM ak nastane chyba, nech makro beží ďalej Dim i As Integer REM deklarácie premenných Dim retazec As String Dim pole() REM naplňujeme naše pole pole() = Array(Now,10.5,-1000,"1000","-1000","10.12.1989","10:21","11/12","10:20:55", "11/5/1000","21/11/1987","11\11\1111","5 November, 1983 11:12:24","1983.12.12", "12.12.1922 15:10:22","15:10:22 12.12.1922") REM v cykle experimentujeme s funkciou Year For i = LBound(pole()) To UBound(pole()) retazec = retazec & CStr(i+1) & ". " & pole(i) & " -> " retazec = retazec & Year(pole(i)) retazec = retazec & Chr(10) Next REM výpis na obrazovku MsgBox retazec End Sub REM koniec procedúry
Test funkcie Year
Rozbor makra:
Musíte si uvedomiť, že funkcia Year je zavisla na premennej Date, preto je možné vyťažiť rok jak z možností
numerického zápisu, tak z podporovaného lokálneho formátu dátumu resp. času. Napríklad, ak zadáme aktuálny dátum
a čas, tak vytiahneme rok 2018 viď. 1. 19.03.2018 01:07:49 ->
2018
Z numerického zápisu vytiahneme takto: 3. -1000 -> 1897
Poďme teraz k funkcii Month. Táto funkcia vracia číslo od 1 do 12, predstavujúce konkrétny kalendárny mesiac.
2. príklad: Testujeme správanie funkcie Month
Sub functionMonth REM začiatok makra On Error Resume Next REM ak nastane chyba, nech makro beží ďalej Dim i As Integer REM deklarácie premenných Dim retazec As String Dim pole() REM naplňujeme naše pole pole() = Array(Now,10.5,-1000,"1000","-1000","10.12.1989","10:21","11/12","10:20:55", "11/5/1000","21/11/1987","11\11\1111","5 November, 1983 11:12:24","1983.12.12", "12.12.1922 15:10:22","15:10:22 12.12.1922") REM v cykle experimentujeme s funkciou Month For i = LBound(pole()) To UBound(pole()) retazec = retazec & CStr(i+1) & ". " & pole(i) & " -> " retazec = retazec & Month(pole(i)) retazec = retazec & Chr(10) Next REM výpis na obrazovku MsgBox retazec End Sub REM koniec procedúry
Test funkcie Month
Rozbor makra:
Keďže aktuálne máme marec tak pri aktuálnom výpise dátumu vráti funkcia Month číslo 3 viď. 1. 19.03.2018 12:56:07 -> 3. A čo numerický zápis? Aj odtiaľ vie funkcia Month vytiahnuť mesiac, napr. 6. 458 -> 4.
A čo vracia funkcia Day? Interval číselných hodnôt od 1 do 31. Všetko zavisí od dňa v mesiaci. Ako viete, niektoré kalendárne mesiace majú 31 dní, iné 30 dní a február má mimo priestupného roku 28 dní (v priestupnom 29 dní). Tieto fakty by mali byť každému jasne, tak poďme túto funkciu zaťažiť našimi testami argumentov.
3. príklad: Testujeme funkciu Day
Sub functionDay REM začiatok makra On Error Resume Next REM ak nastane chyba, nech makro beží ďalej Dim i As Integer REM deklarácie premenných Dim retazec As String Dim pole() REM naplňujeme naše pole pole() = Array(Now,10.5,"29.02.2016","30.02.2016",-1000,"1000","-1000",458,"10.12.1989", "10:21","11/12","10:20:55","11/5/1000","21/11/1987","11\11\1111", "5 November, 1983 11:12:24","1983.12.12","12.12.1922 15:10:22","15:10:22 12.12.1922") REM v cykle experimentujeme s funkciou Day For i = LBound(pole()) To UBound(pole()) retazec = retazec & CStr(i+1) & ". " & pole(i) & " -> " retazec = retazec & Day(pole(i)) retazec = retazec & Chr(10) Next REM výpis na obrazovku MsgBox retazec End Sub REM koniec procedúry
Rozbor makra:
Aký je dnes deň? 19! Aj funkcia nám to bezchybne oznámi: 1. 19.03.2018 02:16:32
-> 19.
Rozlíšenie priestupného roka? Ani to nie je problém pre funkciu Day viď. 3. 29.02.2016 -> 29.
Samozrejme 30. február neexistuje, čiže výstup je nasledovný: 4. 30.02.2016 -> .