Sumário
Índice 🔎︎

# Instrução Function

Uma função é um bloco de código que é executado quando chamado. Uma função é geralmente chamada em uma expressão.

Você pode passar dados, conhecidos como parâmetros ou argumentos, para uma função. Você pode passar um parâmetro por valor ou por referência. Quando for passado por referência, modificações feitas ao parâmetro na função serão enviados de volta para o código que chamou a função.

Funções geralmente retornam dados como resultado.

### Sintaxe:

      [Private | Public] Function Name[char] (argument1 [As Type][, argument2[char][,...]]) [As typename]
              instruções
          [Exit Function]
              instruções
      End Function

### Parâmetros:

scope: o escopo padrão da Function é Public. Um escopo Private denota uma rotina interna do módulo, que não é destinada a ser usada por outros módulos.

name: nome da sub-rotina que deverá conter o valor retornado pela função.

arguments: parâmetro a ser passado para a sub-rotina.

##### fragmento de argumento

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

##### Parâmetros

Optional: o argumento não é obrigatório.

ByRef: o argumento é passado por referência. ByRef é o padrão.

ByVal: o argumento é passado por valor. Seu valor pode ser modificado pela rotina chamada.

char: caractere de declaração de tipo.

typename: nome do tipo de dado primitivo. Podem ser especificados tipos definidos em bibliotecas e módulos.

= expression: especifica um valor padrão para o argumento que confere com seu tipo declarado.Optional é necessário para cada argumento que especifica um valor padrão.

ParamArray: Utilize ParamArray quando o número de parâmetros é indeterminado. Um cenário típico é de uma função definida pelo usuário no Calc. Utilizar ParamArray deveria ser limitado ao último argumento de uma rotina.

Utilizar ParamArray ou = expression requer que Option Compatible seja colocada antes de um código executável num módulo.

Ao utilizar Option VBASupport 1, argumentos Optional sem valor padrão (= expression) são inicializados de acordo com seus tipos de dados , com exceção de Variant.

##### fragmento de nome de tipo

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

##### fragmento de caractere

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

## Exemplos:

    Sub ExampleExit
    Dim sReturn As String
    Dim sListArray(10) As String
    Dim siStep As Single
        For siStep = 0 to 10 ' Preencha a matriz com dados de teste
            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 procura um TextArray:sList() para uma TextEntry:
    ' Valor de retorno é o índice da entrada ou 0 (Null)
        For iCount=1 To Ubound( sList() )
            If sList( iCount ) = sItem Then
                Exit For ' sItem encontrado
            End If
        Next iCount
        If iCount = Ubound( sList() ) Then iCount = 0
        LinSearch = iCount
    End Function

Tópicos relacionados

Conceitos básicos sobre Sub rotinas

Utilizar procedimentos, funções e propriedades

Instrução Sub

Instrução Property