Оператор Sub

Дефинира подпрограма.

note

Операторите Sub и Function действат по един и същ начин. Те получават параметри по адрес, позволявайки модифицирането им. За компилатора на LibreOffice Basic използването на синтаксиса им е взаимозаменяемо.


Синтаксис:

Диаграма на оператора Sub


[Private | Public] Sub name[(argument1 [As typename][, argument2[char][,...]])]
    ' оператори
    [Exit Sub]
    ' оператори
End Sub

Параметри:

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}
    
фрагмент „знак“

знаци за деклариране на тип


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

Примери:


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

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