Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции




Подпрограммы.

Подпрограммы и функции

Синтаксис подпрограммы:

[Private | Public] [Static] Sub имя [(ArgList)]

[statements]

[Exit Sub]

[statements]

End Sub

Public — подпрограмма доступна во всех модулях. При использовании в модуле, содержащем инструкцию Option Private, подпрограмма недоступна в других проектах.

Private — подпрограмма доступна только в модуле в котором описана.

элементы ArgList имеет следующий синтаксис:

[Optional][ByVal | ByRef] [ParamArray] имя [()] [As type] [= поУмолчанию ]

Optional — Ключевое слово, указывающее, что аргумент, по другому — формальный параметр, не является обязательным. При использовании этого ключевого слова все последующие формальные параметры (последующие элементы ArgList) также должны быть необязательными и быть описаны с помощью ключевого слова Optional. Все аргументы, описанные как Optional, должны иметь тип Variant. Не допускается использование в одном ArgList Optional и ParamArray.

ByVal — Указывает, что параметр передаётся по значению.

ByRef — Указывает, что параметр передаётся по ссылке. По умолчанию параметры передаются по ссылке.

ParamArray — Используется только в последнем элементе списка формальных параметров для указания, что параметр является Optional массивом значений типа Variant. Это ключевое слово не может использоваться совместно с ключевыми словами ByVal, ByRef и Optional.

type — поддерживаются типы: Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String, Object, Variant. Если отсутствует ключевое слово Optional, то может быть указан определяемый пользователем тип.

поУмолчанию — константа или выражение дающее константу. Используется только совместно с параметром Optional. Если указан тип Object, единственным значением по умолчанию может быть значение Nothing.

 

Если ключевые слова Private и Public не указаны, то подпрограммы считаются общими. Если не используется слово Static, значения локальных переменных не сохраняются между вызовами процедур.

Exit Sub — приводит к выходу из процедуры.

Синтаксис функции:

[Public | Private] [Static] Function имя [(ArgList)] [As type ]

[statements]

[имя = выражение]

[Exit Function]

[statements]

[имя = выражение]

End Function

Синтаксис функции совпадает с синтаксисом описания процедуры, за исключением того, что (1) функции возвращают значение, поэтому могут содержать описание типа возвращаемого результата и (2) значение возвращаемое функцией может быть присвоено имени функции в её теле. Если значение не будет присвоено, то функция возвращает значение по умолчанию: числовая функция возвращает нулевое значение, строковая — пустую строку (""), функция типа Variant возвращает значение Empty, возвращающая ссылку на объект функция — Nothing (если никакая ссылка не присваивается имени функции при помощи Set).

Если переменная не определена внутри функции, то предполагается, что это глобальная переменная уровня модуля. Если такой переменной уровня модуля нет, и не используется Option Explicit, то создаётся локальная переменная. Во избежание трудно отлавливаемых оплошностей программирования, следует всегда использовать Option Explicit и явно описывать все локальные переменные функции.

Искусственный пример. Если не использовать Option Explicit, то два варианта будут компилироваться:

Вариант 1

Const xx As Integer = 2

Const x As Integer = -1

 

Public Function MyFunc()

If x < 0 Then

MyFunc = x

Else

MyFunc = xx

End If

End Function

Вариант 2

Const xx As Integer = 2

 

Public Function MyFunc()

If x < 0 Then

MyFunc = x

Else

MyFunc = xx

End If

End Function

Если в первом варианте обе величины x и xx определены (на уровне модуля), то во втором варианте величина x явно не определена и компилятор будет считать эту переменную локальной переменной типа Variant. На этапе выполнения значение этой переменной будет — Empty.

Если в начале модуля поместить Option Explicit, то при компиляции второго варианта функции будет выдано сообщение “Compile error: Variable not defined” и выделится переменная x.




Поделиться с друзьями:


Дата добавления: 2014-11-07; Просмотров: 289; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.