Съдържание

# Оператор Function

Функция е блок от код, който се изпълнява, когато бъде извикан. Функциите обикновено биват извиквани в изрази.

Към функция можете да подадете данни, наричани параметри или аргументи. Параметрите се предават по стойност или по адрес. Когато са по адрес, промените, нанесени върху параметъра във функцията, се пренасят обратно към извикващия код.

Функцията обикновено връща данни като резултат.

### Синтаксис:

      [Private | Public] Function Name[char] (argument1 [As Type][, argument2[char][,...]]) [As typename]
              оператори
          [Exit Function]
              оператори
      End Function

### Параметри:

scope: подразбираният обхват на функция е Public. Обхват Private означава подпрограма, вътрешна за модула, която не е предназначена да се използва от други модули.

name: името на подпрограмата, на което се присвоява връщаната от функцията стойност.

arguments: параметри, които да се подават към подпрограмата.

##### фрагмент argument

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

##### Параметри

Optional: аргументът не е задължителен.

ByRef: аргументът се предава по адрес. ByRef се подразбира.

ByVal: аргументът се предава по стойност. Стойността му може да се променя от извиканата подпрограма.

char: знак за деклариране на тип.

typename: име на примитивен тип данни. Могат да се задават и типове, дефинирани в библиотека или модул.

= expression: задава подразбирана стойност за аргумента, съответстваща на декларирания му тип. Всеки аргумент с указана стойност по подразбиране трябва да е придружен с Optional.

ParamArray: използвайте ParamArray, когато броят на параметрите е неопределен. Типичен пример са дефинираните от потребителя функции за Calc. Употребата на ParamArray трябва да е ограничена до последния аргумент на подпрограмата.

Използването на ParamArray или = expression изисква поставянето на Option Compatible преди изпълнимия програмен код на модула.

Когато се използва Option VBASupport 1, аргументите с Optional и без подразбирана стойност (= expression) се инициализират според своя тип данни, освен ако е Variant.

##### фрагмент typename

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

##### фрагмент char

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

## Примери:

    Sub ExampleExit
    Dim sReturn As String
    Dim sListArray(10) As String
    Dim siStep As Single
        For siStep = 0 To 10 ' Запълваме масива с тестови данни
            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 претърсва TextArray:sList() за TextEntry:
    ' Връщаната стойност е индексът на елемента или 0 (Null)
        For iCount=1 To Ubound( sList() )
            If sList( iCount ) = sItem Then
                Exit For ' sItem е намерен
            End If
        Next iCount
        If iCount = Ubound( sList() ) Then iCount = 0
        LinSearch = iCount
    End Function

Теми, свързани с показаната

Основи на подпрограмите

Използване на процедури, функции и свойства

Оператор Sub

Оператор Property