Оператор Function

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

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

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

Синтаксис:

Диаграма на оператора 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 трябва да е ограничена до последния аргумент на подпрограмата.

tip

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


warning

Когато се използва 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

Моля, подкрепете ни!