Pri programovaní VBA funkcia vracia hodnotu. Procedúry funkcií môžete spúšťať a volať funkciu v Exceli 2016. Funkcie, na rozdiel od procedúr Sub, možno vykonávať iba dvoma spôsobmi:
Vyskúšajte túto jednoduchú funkciu. Zadajte ho do modulu VBA:
Funkcia CubeRoot(číslo)
CubeRoot = číslo ^ (1/3)
End Function
Táto funkcia je dosť slabá; vypočítava iba odmocninu čísla, ktoré mu bolo odovzdané ako argument. Poskytuje však východiskový bod pre pochopenie funkcií. Tiež ilustruje dôležitý koncept funkcií: ako vrátiť hodnotu. (Pamätáš si, že funkcia vracia hodnotu, však?)
Všimnite si, že jediný riadok kódu, ktorý tvorí túto procedúru funkcie, vykonáva výpočet. Výsledok matematiky (číslo s mocninou 1/3) je priradený k premennej CubeRoot. Nie náhodou CubeRoot je aj názov funkcie. Ak chcete funkcii povedať, akú hodnotu má vrátiť, priradíte túto hodnotu názvu funkcie.
Volanie funkcie z procedúry Sub
Pretože funkciu nemôžete vykonať priamo, musíte ju zavolať z inej procedúry. Zadajte nasledujúci jednoduchý postup v rovnakom module VBA, ktorý obsahuje funkciu CubeRoot:
Sub CallerSub()
Ans = CubeRoot(125)
MsgBox Ans
End Sub
Keď spustíte procedúru CallerSub, Excel zobrazí okno s hlásením, ktoré obsahuje hodnotu premennej Ans, ktorá je 5.
Tu je to, čo sa deje: Funkcia CubeRoot sa vykoná a dostane argument 125. Výpočet vykoná kód funkcie (pomocou hodnoty odovzdanej ako argument) a vrátená hodnota funkcie sa priradí premennej Ans. Funkcia MsgBox potom zobrazí hodnotu premennej Ans.
Skúste zmeniť argument, ktorý je odovzdaný funkcii CubeRoot a znova spustite makro CallerSub. Funguje to tak, ako by malo – za predpokladu, že funkcii dáte platný argument (kladné číslo).
Mimochodom, postup CallerSub by sa dal trochu zjednodušiť. Premenná Ans nie je skutočne potrebná, pokiaľ váš kód túto premennú neskôr nepoužije. Na získanie rovnakého výsledku môžete použiť toto jediné vyhlásenie:
MsgBox CubeRoot(125)
Volanie funkcie zo vzorca pracovného hárka
Teraz je čas zavolať túto procedúru funkcie VBA zo vzorca pracovného hárka. Aktivujte pracovný hárok v rovnakom zošite, ktorý obsahuje definíciu funkcie CubeRoot. Potom do ľubovoľnej bunky zadajte nasledujúci vzorec:
=CubeRoot(1728)
Bunka zobrazuje 12, čo je skutočne odmocnina z 1 728.
Ako sa dalo očakávať, ako argument funkcie CubeRoot môžete použiť odkaz na bunku. Ak napríklad bunka A1 obsahuje hodnotu, môžete zadať =CubeRoot(A1) . V tomto prípade funkcia vráti číslo získané výpočtom tretej odmocniny hodnoty v A1.
Túto funkciu môžete v pracovnom hárku použiť ľubovoľný počet krát. Podobne ako vstavané funkcie Excelu, aj vaše vlastné funkcie sa zobrazia v dialógovom okne Vložiť funkciu. Kliknite na tlačidlo panela nástrojov Vložiť funkciu a vyberte kategóriu Definované používateľom. V dialógovom okne Vložiť funkciu je uvedená vaša vlastná funkcia.
Funkcia CubeRoot sa zobrazí v kategórii Definované používateľom dialógového okna Vložiť funkciu.
Ak chcete, aby sa v dialógovom okne Vložiť funkciu zobrazil popis funkcie, postupujte takto:
Vyberte Vývojár → Kód → Makrá.
Excel zobrazí dialógové okno Makro, ale CubeRoot sa v zozname nezobrazí. (CubeRoot je procedúra Function a tento zoznam zobrazuje iba procedúry Sub.) Netrápte sa.
Do poľa Názov makra zadajte slovo CubeRoot.
Kliknite na tlačidlo Možnosti.
Do poľa Popis zadajte popis funkcie.
Kliknutím na tlačidlo OK zatvorte dialógové okno Možnosti makra.
Zatvorte dialógové okno Makro kliknutím na tlačidlo Zrušiť.
Tento popisný text sa teraz zobrazuje v dialógovom okne Vložiť funkciu.
Pozrite si funkciu CubeRoot, ktorá sa používa vo vzorcoch pracovného hárka.
Použitie funkcie CubeRoot vo vzorcoch.