Programovanie makier v LibreOffice: Funkcia Format()

LO.png Zoznámte sa so všestrannou funkciou Format(), ktorá poskytuje bohaté formátovacie možností. Dokáže formátovať celé čísla, racionálne čísla či dátum a čas. Okrem toho vie číslo zmeniť na menu alebo percento na základe zadania formátovacieho znaku v podobe jedného slova.  

Formátujeme s funkciou Formát()

Doteraz sme sa učili formátovať rôzne typy čísiel, napr. racionálne čísla, čas či dátum. Avšak o jednej funkcii sme doteraz nehovorili. A nie je to obyčajná funkcia, ale špeciálna. Zvládne formátovať takmer všetko, načo si spomeniete. Prečo sme si ju nepripomenuli skôr? Pretože princípy formátovania sa dobré učia pri jednotlivých funkciách, ktoré sme si spomenuli. S nabitými vedomosťami z minulých častí seriálu bude ľahšie pochopiť fungovanie funkcie Format().

Tento článok predpokladá, že máte zvládnuté základy formátovania z minulých diel a zameria sa na len na veci spojené s funkciou Format().

Deklarácia funkcie Format() je nasledovná:

Format(číslo, reťazec formátovacích znakov);

Funkcia Format() zoberie číslo a podľa predpisu to číslo sformátuje. Návratovou hodnotou je reťazec.

V prvom príklade sa zoznámime s formátovaním celých a racionálnych čísel.

Sub formatPriklad
        Dim cislo As Single
        Dim poleArgumentov As Variant
        Dim vystup As String
        cislo = 59.478
        poleArgumentov = Array("0","#", "#.#","0.0",
        "#","000.0000","#0#0#0#0.#0#0#0#0",
        "0#0#0#0#.0#0#0#0#","#.#0#.#0##0","0,0#0,
        #0#0#0#","0.0#0.#0#0#0#")
        
        For i = LBound(poleArgumentov) To UBound(poleArgumentov)
                vystup = vystup & i & ". " & poleArgumentov(i) & " -> 
                "& format(cislo,poleArgumentov(i)) & Chr(10)
                
        Next
        MsgBox vystup 
End Sub

01pics.png

V programe sme definovali niekoľko možností formátovania racionálneho čísla, ktoré je možne využiť i pre celé čísla. Formátovací znak 0 znamená, že ak na pozícii existuje číslica, zobrazí ju. Ak tam nie je číslica, zobrazí 0. Fungovanie znaku # je obdobné až na detail, že ak sa na pozícii nevyskytuje žiadna číslica, tak nezobrazí nič. Znak . je desatinná čiarka. No ak napíšete druhy krát bodku, vypíše sa ako obyčajný znak, viď napr. 11. 0.0#0.#0#0#0# -> 59,478.000000.

Len pozorne si prezrite príklad a určite prídete na niekoľko formátovacích pravidiel funkcie Format(). Chcem ale upozorniť na jednú zvláštnosť. Najlepšie je to vidieť na tomto príklade: 6. 0###0.000##0 -> 059,478000. Zľava od znaku desatinnej čiarky všetko funguje ako má. Ale vpravo od čiarky je funkcionalita znaku # rovnaká ako u znaku 0!

Funkcia Formát() má niekoľko preddefinovaných formátovacích značiek. Poďme sa s nimi zoznámiť v ďalšom príklade.

Sub formatPriklad
        Dim cislo As Single
        Dim poleArgumentov As Variant
        Dim vystup As String
        cislo = 59.478
        poleArgumentov = Array
        ("General Number","Fixed","Currency",
        "Standard","Percent","Scientific")
        For i = LBound(poleArgumentov) 
        To UBound(poleArgumentov)
                vystup = vystup & i & ". " & poleArgumentov(i) 
                & " -> "& format(cislo,poleArgumentov(i)) & Chr(10)
        Next
        MsgBox vystup 
End Sub

02pics.png

Zaujímavý predvolený znak môže byť pre vás Currency, ktorý pridá menu takú, ako ju mate nastavenú a Percent, ktorý číslo zobrazí ako percenta. A ak chcete vedecké zobrazenie čísla, využite predvolený formátovací znak Scientific.

Poslednú vec, čo si ukážeme je využitie funkcie Formát() pre formátovanie času a dátumu.

Sub formatPriklad
        Dim cas As Single
        Dim poleArgumentov As Variant
        Dim vystup As String
        cislo = Now
        poleArgumentov = Array
        ("q", "qq", "y", "yy", "yyyy","m", 
        "mm", "mmm", "mmmm", "mmmmm","d", 
        "dd", "ddd", "dddd", "ddddd", "dddddd",
        "w", "ww", "h", "hh", "n", "nn", "nnn", 
        "s", "ss","ttttt", "c","d/mmmm/yyyy h:nn:ss")
        For i = LBound(poleArgumentov) To UBound(poleArgumentov)
                vystup = vystup & i & ". " & poleArgumentov(i) & " -> 
                "& format(cislo,poleArgumentov(i)) & Chr(10)
        Next
        MsgBox vystup 
End Sub

03pics.png

Ako vidíte, funkcia Formát() má mnoho možností formátovania dátumu a času. Väčšina formátovacích znakov je ľahko odvoditeľná a myslím si, vzhľadom i na minulé diely, že by ste mali sa v tom jednoducho orientovať. V prípade nejakých nejasností navštívte dole uvedené odkazy, z ktorých som čerpal a rovnako máte možnosť sa pýtať v komentároch pod článkom.

Toto by bol posledný diel zo série formátovania. Budúca téma už nebude mať nič spoločné s doterajšími témami a ak nám to ďalej dobré pôjde, dotkneme sa konečne pokročilejších a zaujímavejších tém. Takže buďte naladení a v roku 2019 sa vidíme v ďalšom článku.

Námet na tento článok poslúžili tieto zdroje:

OpenOffice.org Macros Explained Third Edition, Andrew Pitonyak, page 157-161, dostupné online

Funkce Format, help.libreoffice.org, dostupné online

(Jako ve škole) Průměr: 1.00 | Hodnotilo: 4
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz