Funkce jsou v podstatě jakési mini programy, které provádějí zadané úkony. Calc umožňuje vytvářet i vlastní takovéto prográmky, které pak můžete volat v listu jako funkci. Obecně se takovým programům vytvořeným v rámci sešitu říká makra.
Jak s makry začít
Abyste mohli makra (a tedy i naprogramované funkce) spouštět, musíte je nejprve povolit přes menu Nástroje | Volby... | OpenOffice.org | Bezpečnost | Zabezpečení maker. V otevřeném dialogu nastavte úroveň zabezpečení na střední. Při otevírání souboru s makry je pak nutné makra vždy povolit.
Povolení maker při otevírání souboru
OpenOffice.org umožňuje psát makra v různých programovacích jazycích, na výběr máte: OpenOffice.org Basic, Python, JavaScript, BeanShell. Příklad dále je napsán v Basicu.
Správce maker pro OpenOffice.org Basic
Editor Basicu spustíte přes menu Nástroje | Makra | Správce maker | OpenOffice.org Basic. Ve zobrazeném správci maker vyberte soubor a modul, ve kterém chcete makro editovat. Pokud v souboru ještě není žádný modul, pak vytvořte nový pomocí stejnojmenného tlačítka. Jestliže chcete editovat konkrétní, již existující makro, vyberte ho ze seznamu Existující makra a klikněte na Upravit. Tím se otevře editor Basicu, jak vidíte na následujícím obrázku.
Další text předpokládá alespoň základní znalost nějakého programovacího jazyka, např. Basicu, Pascalu, C či Perlu, a základních struktur, jako jsou sekvence, selekce a iterace. OpenOffice.org Basic má velmi jednoduchou syntaxi, komplikace pak nastávají v případě využití objektů Calcu.
Hlavní část okna editoru Basicu zabírá samotná editační oblast, ve které se píše text maker a funkcí. Pod ní se nachází tzv. kukátko, pomocí kterého lze při krokování sledovat hodnoty zvolených proměnných. Pomocí rozbalovacího seznamu nad editační oblastí se lze rychle přepínat mezi jednotlivými soubory s makry.
Funkce se v OOo Basicu zapisují následovně:
Function nazev_funkce(parametry) příkazy End Function
Parametry jsou volitelné, je však jen málo funkcí, které by je nepoužívaly.
Příklad makra
V následujícím popisovaném příkladu bude vytvořena nová, vlastní funkce SPLITSTRING
, která má za úkol rozdělit vstupní text podle zadaného oddělovače a jako výsledek vrátit pořadím určenou část vstupního textu po rozdělení. V programovacích jazycích je k tomuto obvykle určen příkaz split. Calc však takovouto funkci v rámci sešitu nemá (v Basicu však ano, což znamená úsporu práce). Například SPLITSTRING("a,b,c,d";",";3)
má vrátit „c“.
Prvním úkolem je převzetí odpovídajících parametrů z funkce zadané v sešitu. Funkce SPLITSTRING
bude mít tedy parametry v tomto pořadí:
-
vstupní text;
-
oddělovač;
-
pořadí z rozdělených částí.
Parametry převezmete již v hlavičce funkce:
Function splitstring(retezec, rozdelovac, prvek)
Kdo je zvyklý definovat u proměnných datové typy, může použít delší zápis:
Function splitstring(retezec as string, rozdelovac as string, prvek as integer) as string
Celý úkol značně usnadní příkaz Basicu split, který rozdělí vstupní text na části podle zadaného oddělovače a jeho výsledkem je pak pole řetězců – v příkladu nazvané polozky
na 3. řádku.
Na 2. řádku je potřeba od zadaného pořadí odečíst jedničku, protože první prvek pole polozky
má index 0.
Řádky 4-8 pak představují jakési bezpečnostní opatření pro případ, že by někdo zadal pořadí z pole rozdělených položek, které neexistuje (záporné pořadí nebo příliš vysoké) – samotný test je proveden na řádku 4. Příkaz ubound(název_pole)
vrací počet prvků v poli. Pokud ve funkci zadaný parametr pořadí není v rozsahu počtu prvků pole polozky
, pak je výsledkem prázdný řetězec (řádek 5), jinak je vrácen odpovídající prvek z pole polozky (řádek 7).
Výpis funkce SPLITSTRING
– řádky jsou číslovány pro lepší provázanost s textem:
-
Function splitstring(retezec, rozdelovac, poradi)
-
poradi = poradi - 1
-
polozky = split(retezec, rozdelovac)
-
if poradi < 0 or poradi > ubound(polozky) then
-
splitstring = ""
-
else
-
splitstring = polozky(poradi)
-
end if
-
End Function
Jestliže máte funkci zapsanou v Basicu, můžete ji pak použít v samotném listu. Pokud ji budete chtít použít v jiném sešitu (souboru ODS), musíte ji vložit do jeho maker – buďto běžným překopírováním textu makra, nebo načtením ze souboru. Makra zapsaná v editoru Basicu lze uložit pomocí ikonky diskety v horní liště a načíst pomocí ikonky složky (soubory mají příponu .bas a jde o obyčejný text); položky v menu Soubor slouží k ukládání a otevírání celého dokumentu.
Ke stažení
Stáhněte si uvedené dokumenty:
Další články o funkcích
- Programování vlastních funkcí v Calcu – REVERSE, INSTRCOUNT a LASTINRANGE
- Programování vlastních funkcí v Calcu – příklad SPLITSTRING
- Funkce pro inteligentní součty (zejména SUBTOTAL, SUMIF)
- Pokročilé adresování buněk v Calcu
- Funkce pro hledání a párování buněk v Calcu
- Důvěřuj, ale prověřuj – funkce pro kontrolu hodnot
- Funkce pro práci s textem – nahrazování, převod z čísel a na čísla, další možnosti
- Funkce pro práci s textem – spojování, pročištění, vyhledávání
- Možnosti kopírování a vkládání obsahu buněk
- Vkládání a úpravy funkcí pomocí průvodce
- Funkce v OpenOffice.org Calc – síla, kterou je obtížné zkrotit
- Logické funkce 2 – AND, OR
- Logické funkce 1 - funkce IF