Obsah

# Příkaz Function

Funkce je blok kódu, který se při zavolání spustí. Její volání je obvykle součástí výrazu.

Funkci můžete předat data, označovaná jako parametry či argumenty. Parametr lze předat hodnotou či odkazem. Při předání odkazem se změny parametry provedené ve funkci vrátí zpět do kódu, který funkci zavolal.

Funkce zpravidla vrátí nějaká data jako výsledek.

### Syntaxe:

      [Private | Public] Function Name[char] (argument1 [As Type][, argument2[char][,...]]) [As typename]
              příkazy
          [Exit Function]
              příkazy
      End Function

### Parametry:

oblastPlatnosti: Výchozí oblastí platnosti pro funkci je Public. Oblast Private označuje interní podprogram modulu, tj. není zamýšleno používat jej z jiných modulů.

název: Název podprogramu.

agrumenty: Parametry předávané podprogramu.

##### Fragment argumentu

          {[Optional [ByRef|ByVal]]|ParamArray} argument {{As typename|char}[ = expression]|[()]As Variant}

##### Parametry

Optional: Tento argument není povinný.

ByRef: Tento argument je předáván odkazem. Jedná se o výchozí nastavení.

ByVal: Tento argument je předáván hodnotou. Jeho hodnota může být volaným podprogramem změněna.

char: Znak deklarace typu.

typename: Název primitivního datového typu. Lze uvést také typy definované v knihovně nebo v modulu.

= expression: Určuje výchozí hodnotu argumentu, odpovídající deklarovanému typu. Každý argument s výchozí hodnotou je nutné označit jako Optional.

ParamArray: Použijte jej v případě, že není znám počet parametrů. Typickým případem jsou uživatelem definované funkce v Calcu. Použití ParamArray by se mělo omezit na poslední argument procedury.

Použití možnosti ParamArray nebo = expression vyžaduje, aby bylo před spustitelným programem v modulu zadáno Option Compatible.

Při použití volby Option VBASupport 1 se argumenty, které jsou označeny jako Optional, ale nemají výchozí hodnotu (= expression), se inicializují podle svých datových typů (kromě typu Variant).

##### Fragment názvu typu

          {Boolean|Byte|Currency|Date|Double|Integer|Long|Object|Single|String|Variant}

##### Fragment znaku

          { % | & | ! | # | $ | @ }

## Příklady:

    Sub ExampleExit
    Dim sReturn As String
    Dim sListArray(10) As String
    Dim siStep As Single
        For siStep = 0 to 10 ' Naplní pole testovacími údaji
            sListArray(siStep) = chr$(siStep + 65)
            MsgBox sListArray(siStep)
        Next siStep
        sReturn = LinSearch(sListArray(), "B")
        Print sReturn
    End Sub

    Function LinSearch( sList(), sItem As String ) As Integer
    Dim iCount As Integer
    ' Linsearch vyhledá v TextArray:sList() položku TextEntry:
    ' Návratová hodnota je index záznamu nebo 0 (Null)
        For iCount=1 To Ubound( sList() )
            If sList( iCount ) = sItem Then
                Exit For ' nalezeno sItem
            End If
        Next iCount
        If iCount = Ubound( sList() ) Then iCount = 0
        LinSearch = iCount
    End Function

Související témata

Základy procedur

Použití procedur, funkcí a vlastností

Příkaz Sub

Příkaz Property