V programování VBA funkce vrací hodnotu. Procedury funkcí můžete spouštět a volat funkci v aplikaci Excel 2016. Funkce, na rozdíl od procedur Sub, lze provádět pouze dvěma způsoby:
Vyzkoušejte tuto jednoduchou funkci. Zadejte jej do modulu VBA:
Funkce CubeRoot(číslo)
CubeRoot = číslo ^ (1 / 3)
End Function
Tato funkce je docela slabá; pouze vypočítá odmocninu z čísla, které mu bylo předáno jako argument. Poskytuje však výchozí bod pro pochopení funkcí. Také ilustruje důležitý koncept funkcí: jak vrátit hodnotu. (Pamatujete si, že funkce vrací hodnotu, že?)
Všimněte si, že jediný řádek kódu, který tvoří tuto proceduru Function, provádí výpočet. Výsledek matematiky (číslo umocněné 1/3) je přiřazen k proměnné CubeRoot. Ne náhodou je CubeRoot také název funkce. Chcete-li funkci říci, jakou hodnotu má vrátit, přiřadíte tuto hodnotu k názvu funkce.
Volání funkce z procedury Sub
Protože funkci nemůžete spustit přímo, musíte ji volat z jiné procedury. Zadejte následující jednoduchý postup ve stejném modulu VBA, který obsahuje funkci CubeRoot:
Sub CallerSub()
Ans = CubeRoot(125)
MsgBox Ans
End Sub
Když spustíte proceduru CallerSub, Excel zobrazí okno se zprávou, které obsahuje hodnotu proměnné Ans, což je 5.
Tady je to, co se děje: Funkce CubeRoot se provede a obdrží argument 125. Výpočet je proveden kódem funkce (pomocí hodnoty předané jako argument) a vrácená hodnota funkce je přiřazena proměnné Ans. Funkce MsgBox pak zobrazí hodnotu proměnné Ans.
Zkuste změnit argument, který je předán funkci CubeRoot, a znovu spusťte makro CallerSub. Funguje to tak, jak má – za předpokladu, že funkci dáte platný argument (kladné číslo).
Mimochodem, procedura CallerSub by se dala trochu zjednodušit. Proměnná Ans není ve skutečnosti vyžadována, pokud váš kód tuto proměnnou později nepoužije. K získání stejného výsledku můžete použít tento jediný příkaz:
MsgBox CubeRoot(125)
Volání funkce ze vzorce listu
Nyní je čas zavolat tuto proceduru funkce VBA ze vzorce listu. Aktivujte list ve stejném sešitu, který obsahuje definici funkce CubeRoot. Poté do libovolné buňky zadejte následující vzorec:
=CubeRoot(1728)
Buňka zobrazuje 12, což je skutečně odmocnina z 1 728.
Jak můžete očekávat, můžete použít odkaz na buňku jako argument pro funkci CubeRoot. Pokud například buňka A1 obsahuje hodnotu, můžete zadat =CubeRoot(A1) . V tomto případě funkce vrátí číslo získané výpočtem třetí odmocniny hodnoty v A1.
Tuto funkci můžete v listu použít kolikrát. Stejně jako vestavěné funkce aplikace Excel se vaše vlastní funkce zobrazí v dialogovém okně Vložit funkci. Klepněte na tlačítko panelu nástrojů Vložit funkci a vyberte kategorii Definováno uživatelem. V dialogovém okně Vložit funkci je uvedena vaše vlastní funkce.
Funkce CubeRoot se zobrazí v kategorii User Defined v dialogovém okně Vložit funkci.
Pokud chcete, aby se v dialogovém okně Vložit funkci zobrazil popis funkce, postupujte takto:
Vyberte Vývojář → Kód → Makra.
Excel zobrazí dialogové okno Makro, ale CubeRoot se v seznamu nezobrazí. (CubeRoot je procedura Function a tento seznam zobrazuje pouze procedury Sub.) Nedělejte si starosti.
Do pole Název makra zadejte slovo CubeRoot.
Klepněte na tlačítko Možnosti.
Do pole Popis zadejte popis funkce.
Klepnutím na tlačítko OK zavřete dialogové okno Možnosti makra.
Zavřete dialogové okno Makro kliknutím na tlačítko Storno.
Tento popisný text se nyní zobrazí v dialogovém okně Vložit funkci.
Podívejte se na funkci CubeRoot, která se používá ve vzorcích listu.
Použití funkce CubeRoot ve vzorcích.