Funkcie Year, WeekDay a DateValue
O čase a dátume v makrách sme už letmo nahliadli v skorších častiach seriálu. Sám ale cítim, že do tejto oblasti treba nahliadnuť podrobnejšie a taktiež je potrebné si ukázať ďalšie funkcie z tejto oblastí.
Zopakujme si, ako sa pozeráme na dátum v makre. Začiatok kalendára vo funkcii CDate sa datuje 31. december 1899. To znamená, že číslo 1 je 0. hodina, 0 minút dňa 31. decembra 1899.
Čo myslíte, akú hodnotu získame pri desatinnom čísle 1.1? 2 hodina, 40 minút dňa 31. decembra 1899. Každý desatinný dielik predstavuje 2 hodín a 40 minút. To je všetko, čo sme si zatiaľ prebrali.
Sú ešte nejaké možností alebo funkcie na prácu s časom? Áno, v tomto článku si ich pár ukážeme. Taktiež i v budúcom článku niečo ďalšie spomenieme.
Vytvoríme si makro, kde využijeme funkcie Year. WeekDay a DateValue.
1. program Využitie funkcie Year, WeekDay a DateValue.
Sub DatumFunkcie REM začiatok procedúry Vstup = InputBox("Zadajte dátum v tvare: dd.mm.rrrr") REM vstup od užívateľa If Not IsDate(Vstup) Then REM podmienka MsgBox("Zadal si zlý formát dátumu! Skus ma ešte raz zapnúť") REM výpis na obrazovku Exit Sub REM koniec makra, ak je podmienka splnená End If REM koniec podmienky Datum = DateValue(Vstup) REM zmena textu na dátum MsgBox("Rok: "&Year(Datum)&Chr(10)&"Den v týždni: "&WeekDay(Datum)) REM výpis a použitie funkcii End Sub REM koniec procedúry
Vstup od užívateľa
Výsledok
Rozbor makra:
Makro začne vstupom od užívateľa, následne otestuje, či užívateľ napísal správny formát dátumu. Ak nie, makro sa skončí.
Makro ďalej pokračuje tým, že premení textovú premennú na dátum pomocou funkcie DateValue a následne pri vypíse využíjeme funkciu Year a WeekDay.
Funkcia Year nájde rok v dátume, funkcia WeekDay vypočíta deň v týždni. Rozsah návratovej funkcie je od 1 do 7, kde 1 je nedeľa, 2 je pondelok až po 7 je sobota.
Funkcie Hour a Minute
Nebudeme to zdržovať, rovno si pozrieme ukážku makra:
2. program: Využitie funkcie Hour a Minute.
Sub CasFunkcie REM začiatok procedúry Vstup = InputBox("Zadajte čas v tvare hh:mm") REM vstup od užívateľa If Not IsDate(Vstup) Then REM podmienka MsgBox("Zadal si zlý formát času! Skus ma ešte raz zapnúť") REM výpis od užívateľa Exit Sub REM ak splnená podmienka, koniec makra End If REM koniec podmienky Cas = TimeValue(Vstup) REM premena textu na čas MsgBox("Hodina: "& Hour(Cas)&Chr(10)&"Minuta: "&Minute(Cas)) REM výpis na obrazovku a použitie funkcii End Sub REM koniec procedúry
Vstup od užívateľa
Výsledok
Rozbor makra: Spočiatku užívateľ zadá čas vo formáte hh:mm. Funkcia IsDate skontroluje, či je to skutočne čas. Ak nie, makro skončí.
Pokračuje sa konverziou textu do času pomocou funkcie TimeValue. Následne výpis na obrazovku s funkciami Hour a Minute. Ako ich anglicky názov indikuje, funkcia Hour ukazuje hodiny a Minute minúty.
Stopky pomocou funkcie Timer
Vytvoríme si makro, ktoré nám odmeria čas.
3. program Využitie funkcie Timer
Sub Stopky REM začiatok procedúry MsgBox "Stísknite tlačítko OK a spustite odpočítavanie" REM výpis na obrazovku Start = Timer REM využitie funkcie Timer MsgBox "Stísknite tlačítko OK a prerušite odpočítavanie" REM výpis na obrazovku Koniec = Timer REM využitie funkcie Timer Vysledok = Koniec-Start REM spočítanie intervalu MsgBox "Dĺžka odpočítavania v sekundách je: "&Vysledok REM výpis výsledku End Sub REM koniec procedúry
Začiatok odpočítavania
Koniec odpočítavania
Výsledok
Rozbor makra: Po spustení makra sa vytvorí prvé dialógové okno, ktoré nás informuje o stlačení tlačítka OK a ak užívateľ stlačí OK, tak sa spustí odpočítavanie. Druhé dialógové okno nás požiada o zastavení počítania časového intervalu. Je na užívateľovi, kedy ho zastaví. Nakoniec sa zobrazí informácia o dĺžke intervalu odpočítavania. Tieto jednoduché stopky sme dokázali vytvoriť pomocou funkcie Timer. Návratová hodnota funkcie Timer je aktuálny čas. Po odčítaní druhého časového záznamu s prvým dostaneme uplynulý interval v sekundách.