Vsebina
Kazalo 🔎︎

# Ukaz Function

Definira podprogram, ki ga lahko uporabimo kot izraz določene vrste.

Ukazi Sub, Function ali Property so podobne metode, brez razlike. Prejemajo parametre po sklicu, kar omogoča njihovo spreminjanje. Prevajalnik LibreOffice Basic sprejema izmenično uporabo njihove skladnje argumentov.

### Skladnja:

      [Private | Public] Function Name[char] (argument1 [As Type][, argument2[char][,...]]) [As typename]
              ukazi
          [Exit Function]
              ukazi
      End Function

### Parametri:

scope: privzeti domet (angl. scope) funkcije je Public (angl. javen). Domet Private (angl. zaseben) določa interno rutino modula, ki ni namenjena uporabi iz drugih modulov.

Ime: Ime podprograma, ki naj vsebuje vrednost, ki jo funkcija vrne.

Argumenti: parametri, ki bodo posredovani podprogramu.

##### Fragment argumenta

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

##### Parametri

Optional: argument ni obvezen.

ByRef: argument je podan po sklicu. ByRef je privzeta vrednost.

ByVal: argument je podan z vrednostjo. Njegovo vrednost lahko klicana rutina spremeni.

znak-vrste: znak za deklaracijo vrste.

ime-vrste: ime vrste primitivnih podatkov. Določite ga lahko tudi v knjižnici ali modulu definirane vrste.

= izraz: Določite privzeto vrednost za argument, ki se ujema z njegovo vrsto iz deklaracije. Optional je obvezen za vsak argument, ki ima določeno privzeto vrednost.

ParamArray: uporabite ParamArray, ko število parametrov ni določeno. Tipična raba je pri uporabniško določeni funkciji programa Calc. Uporaba ParamArray je omejena na zadnji argument rutine.

Uporaba ParamArray ali = izraz zahteva, da je Option Compatible postavljen pred izvedljivo programsko kodo v modulu.

Ko uporabljate Option VBASupport 1, se neobvezni argumenti Optional brez privzete vrednosti (= izraz) inicializirajo glede na njihovo vrsto podatkov, razen kadar so Variant.

##### fragment typename

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

##### fragment char

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

## Primeri:

    Sub ExampleExit
    Dim sReturn As String
    Dim sListArray(10) As String
    Dim siStep As Single
        For siKorak = 0 to 10 ' napolni polje s preizkusnimi podatki
            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
    ' LinIskanje išče v polju besedil TextArray:sSeznam() besedilo sVnos:
    ' vrne indeks elementa ali pa 0 (Null)
        For iCount=1 To Ubound( sList() )
            If sList( iCount ) = sItem Then
                Exit For ' sVnos je najden
            End If
        Next iCount
        If iCount = Ubound( sList() ) Then iCount = 0
        LinSearch = iCount
    End Function