Procedury a funkce

Procedury a funkce se souhrnně nazývají podprogramy. Jsou to tedy části programu, které plní některé dílčí úkoly. Program ve VBA se může skládat z mnoha různých podprogramů a jejich volání.
Podprogram je část zdrojového kódu, která začíná deklarací programu a je ukončena příkazem pro ukončení podprogramu.

Druhy podprogramů: Parametry

Parametr představuje v programovacím jazyku konstanta, proměnná nebo výraz, který je předáván do procedury nebo funkce. U parametrů mohou rovněž být určeny jejich datové typy.
U vlastních podprogramů, které budou provádět kód v závislosti na určitých vstupních parametrech, musíte tyto parametry deklarovat v hlavičce podprogramu. K tomuto účelu jsou určeny závorky za názvem procedury či funkce. U parametrů můžeme také určit datový typ. Pokud je nezadáme, bude použit typ Variant.

např. Sub Pocitani (a as Integer, b as Integer)

Procedura

Sub název (parametry)

    [příkazy]

    [Exit Sub]

    [příkazy]

End Sub

Příkaz Sub slouží k deklaraci názvu, parametrů a těla procedury. Tento strukturovany příkaz je ukončený řádkem End Sub.
Pokud je použitý příkaz Exit Sub, bude v tomto místě procedura ukončena a pokud je volaná z jiné procedury, bude proveden návrat do této procedury.
Subrutina bez parametrů je makrem.

Proceduru voláme jménem, za nímž následuje seznam parametrů.
např. mojeProcedura a, b

Př. Vytvoř proceduru ctverecS, která načte hodnotu strany a. Dále zavolá proceduru obsahCtverceS obsah, která vypočte a zobrazí obsah čtverce o straně a.

Sub ctverecS() 
    Dim a as Double
    a= val(InputBox("Strana a?"))
    obsahCtverceS a
End Sub 


Sub obsahCtverceS (a as Double) 
    MsgBox a * a,,"Obsah čtverce:"
End Sub  

Funkce

Function název (parametry) [As typ]

    [příkazy]

    [název = výraz]

    [Exit Function]

    [příkazy]

    [název = výraz]

End Sub

Příkaz Function slouží k deklaraci názvu, parametrů a těla procedury. Tento strukturovany příkaz je ukončený řádkem End Function.
Pokud je použitý příkaz Exit Function, bude v tomto místě funkce ukončena a pokud je volaná z jiné procedury, bude proveden návrat do této procedury.
Aby funkce vrátila hodnotu, musí se v těle funkce alespoň jednou použít příkaz název = výraz. Funkci se tímto přiřadí hodnota. Datový typ výrazu musí být totožný s datovým typem Funkce.

Proceduru voláme jménem, za nímž následuje seznam parametrů uzavřený do kulatých závorek.
např. mojeFunkce (a, b)

Př. Vytvoř proceduru ctverecS, která načte hodnotu strany a. Dále zavolá funkci obsahCtverceF obsah, která vypočte obsah čtverce o straně a a vrátí tuto hodnotu. Procedura zobrazí obsah čtverce.

Sub ctverecS()
    Dim a as Double
    a= val(InputBox("Strana a?"))
    MsgBox obsahCtverceF (a),, "Obsah čtverce:"
End Sub 


Function obsahCtverceF (a as Double) as Double
    obsahCtverceF = a * a
End Sub