Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

gstrWhereClub = Winthrop а затем нажмете клавишу enter. 6 страница



 

Синтаксис:

[Public I Private] [Static] Function имя-функции —^ ([<аргументы>]) [As тип-данных]

[<инструкции-тела-функции>]

[имя-функции = <выражение>]

[Exit Function]

[ <инструкции-тела-функции>]

[имя-функции = <выражение>] End Function

где <аргументы> — это

{ [Optional] [ByVal I ByRef] [ParamArray] имя-аргумента —^ [As тип-данных} ],...

Пояснения:

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

При использовании ключевого слова Static значения всех переменных, объявленных явно или неявно внутри процедуры Function, сохраняются в течение всего времени, пока открыт модуль, содержащий эту процедуру. Это равносильно использованию инструкции Static (обсуждавшейся ранее в данной главе) для явного объявления всех переменных, создаваемых в этой функции.



Для описания типа возвращаемых функцией значений можно использовать символ описания типа данных в конце имени функции или предложение As. Если тип данных не объявлен, то функция возвратит значение типа Variant. Функция возвращает значение, которое присвоено имени функции в теле процедуры Function. Присваиваемое значение должно быть совместимо с описанным типом данных функции.

Следует объявлять типы данных для всех аргументов функции. Обратите внимание, что имена переменных, передаваемых вызывающей процедурой, могут отличаться от имен формальных аргументов функции. Если при описании аргумента используется ключевое слово ByVal (By Value — по значению), то VBA передаст функции копию соответствующего аргумента. Любые изменения аргумента, объявленного с ключевым словом ByVal, не влияют на исходную переменную в вызывающей процедуре. Если фактический аргумент, передаваемый процедуре при ее вызове, представляет собой выражение, VBA рассматривает его так, как если бы в процедуру передавался соответствующий аргумент по значению. Ключевое слово ByRef указывает, что аргумент передается по ссылке. В этом случае VBA передает адрес переменной, что позволяет процедуре изменять фактическое значение этой переменной. Учтите, что VBA всегда передает массивы только по ссылке.

Ключевое слово Optional используется для описания необязательного аргумента типа Variant. В этом случае все последующие аргументы функции также должны быть необязательными и описываться с помощью ключевого слова Optional. Отсутствие необязательного аргумента можно проверить с помощью встроенной функции IsMissing. Для описания массива необязательных элементов типа Variant служит ключевое слово ParamArray. При последующем вызове функции вы можете передавать ей произвольное число аргументов. Аргумент, описанный с использованием ключевого слова ParamArray, должен быть последним в списке аргументов функции.

Инструкцию Exit Function можно использовать в любом месте тела функции. Это гарантирует очистку ошибок и нормальный выход из функции с возвратом в вызывающую процедуру. Если при выполнении функции произошла ошибка и работа функции завершается по инструкции End Function, то управление передается вызывающей процедуре без очистки ошибки. (Более подробно обработка ошибок рассматривается в разделе «Обработка ошибок» этой главы.)

Пример:

Чтобы создать функцию с именем My Function, принимающую целочисленный и строковый аргументы и возвращающую значение с плавающей точкой двойной точности, введите:

Function MyFunction (intArg! As Integer, strArg2 As String) As Double

<инструкции-тела-функции> End Function

Инструкция Sub

Инструкция Sub используется для объявления новой подпрограммы, описания ее аргументов и исходного текста процедуры.

Синтаксис:

[Public | Private] [Static] Sub имя-подпрограммы —».

([<аргументы>]) [As тип-данных]

[ <инструкции-тела-подпрограммы> ]

[Exit Sub]

[ <инструкции-тела-подпрограммы> ] End Sub

где <аргументы> — это

{ [Optional] [ByVal | ByRef] [ParamArray] имя-аргумента —а. [As тип-данных} },...

 

Пояснения:

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

При использовании ключевого слова Static значения всех переменных, объявленных явно или неявно внутри процедуры Sub, сохраняются в течение всего времени, пока открыт модуль, содержащий эту процедуру. Это равносильно использованию инструкции Static (обсуждавшейся ранее в данной главе) для явного объявления всех переменных, создаваемых в этой подпрограмме.

Следует объявлять типы данных для всех аргументов процедуры Sub. Обратите внимание, что имена переменных, передаваемых вызывающей процедурой, могут отличаться от имен формальных аргументов подпрограммы. Если при описании аргумента используется ключевое слово ByVal, то VBA передаст подпрограмме копию соответствующего аргумента. Любые изменения аргумента, объявленного с ключевым словом ByVal, не влияют на исходную переменную в вызывающей процедуре. Если фактический аргумент, передаваемый процедуре при ее вызове, представляет собой выражение, VBA рассматривает его так, как если бы аргумент в процедуру передавался по значению. Ключевое слово ByRef указывает, что аргумент передается по ссылке. В этом случае VBA передает адрес переменной, что позволяет процедуре Sub изменять фактическое значение переменной. Учтите, что VBA всегда передает массивы только по ссылке.


Дата добавления: 2015-11-04; просмотров: 26 | Нарушение авторских прав







mybiblioteka.su - 2015-2024 год. (0.008 сек.)







<== предыдущая лекция | следующая лекция ==>