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
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
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
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