Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык Visual Basic for Applications Билеты Bilety_Po_Programmirovaniyu.docx
Скачиваний:
30
Добавлен:
15.03.2015
Размер:
458.22 Кб
Скачать

Вопрос № 4

Процедуры – подпрограммы и процедуры – функции. Отличие подпрограмм от функций. Создание и использование. Процедуры обработки событий. Примеры.

Процедуры-функции

Процедура-функция -  это подпрограмма, которая не только получает какую-то информацию, но и возвращает какое-то значение. Вызов функции является выражением и может использоваться в других выражениях.

Общий вид функции:

[Public| Private] [Static] Function ИмяФункции (СписокАргументов) [As тип]

Инструкции

ИмяФункции=Выражение

Exit Function

Инструкции

ИмяФункции=Выражение

End Function

Параметры:

Public Необязательный. Указывает, что процедура Function доступна для всех других процедур во всех модулях. При использовании в личном модуле (содержащем инструкцию Option Private) такая процедура недоступна вне проекта. Private Необязательный. Указывает, что процедура Function доступна для других процедур только того модуля, в котором она описана. Static Необязательный. Указывает, что локальные переменные процедуры Function сохраняются в промежутках времени между вызовами этой процедуры. Атрибут Static не действует на переменные, описанные вне процедурыFunction, даже если они используются в этой процедуре. имя Обязательный. Имя процедуры Function, удовлетворяющее стандартным правилам именования переменных. списокАргументов Необязательный. Список переменных, представляющий аргументы, которые передаются в процедуру Function при ее вызове. Имена переменных разделяются запятой.

  • Optional - Необязательный. Указывает, что этот аргумент необязателен. При использовании этого элемента все последующие аргументы, которые содержит списокАргументов, также должны быть необязательными и быть описаны с помощью ключевого слова Optional. Не допускается использование ключевого слова Optional для любого из аргументов, если используется ключевое слово ParamArray.

  • ByVal - Необязательный. Указывает, что этот аргумент передается по значению.

  • ByRef - Необязательный. Указывает, что этот аргумент передается по ссылке. Описание ByRef используется в Visual Basic по умолчанию.

  • ParamArray - Необязательный. Используется только в качестве последнего элемента в списке списокАргументов для указания, что конечным аргументом является описанный как Optional массив типа Variant. Ключевое слово ParamArray позволяет задавать произвольное количество аргументов. Оно не может быть использовано со словами ByVal, ByRef или Optional.

  • имяПеременной - Обязательный. Имя переменной, удовлетворяющее стандартным правилам именования переменных.

  • тип - Необязательный. Тип данных аргумента, передаваемого в процедуру; допускаются типы Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (только строки переменной длины), Object, Variant. Если отсутствует ключевое слово Optional, допускается указание определяемого пользователем типа или объектного типа.

  • Инструкции Необязательный. Любая группа инструкций, выполняемых внутри процедуры Function.

  • выражение Необязательный. Возвращаемое значение процедуры Function

  • Инструкция Exit Function приводит к немедленному выходу из процедуры Function. Выполнение программы продолжается с инструкции, следующей за инструкцией, в которой была вызвана процедура Function. В любом месте процедуры Function возможно наличие любого числа инструкций Exit Function

Пример:

Function F(x)

F=Cos(x)^2

End Function

Процедуры-функции хранятся вместе с встроенными функциями Экселя, и могут быть вызваны прямо с листа (клик на строку функций - = - выбрать функцию - Пользовательские функции – имя функции) или в Visial Basic с помощью оператора присваивания:

<переменная> = <имя_функции> {(<аргументы>)]

Иногда в первой строке после списка параметров пишут также тип функции.

Пример:

эта функция вернет значение True и сообщение «ОК», если в ячейке А1 значение 5, и во всех остальных случаях False и сообщение "Try again"

Public Function ValidateData() As Boolean

If Cells(1,1)=5 Then

MsgBox “OK”

ValidateData=True

Exit Function

End If

ValidateData=False

End Function

Процедуры-подпрограммы

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

Общий вид подпрограммы:

Sub <имя_подпрограммы> [(<параметры>)]  <операторы>  End Sub

Пример:

Процедура сообщение выводит сообщение с полем для ввода (InputBox) “Как Вас зовут?”, в поле вводиться имя, которое переноситься в ячейку А1

Public Sub primer()

Dim s As String

s=InputBox(“Как Вас зовут?”)

Range(“A1”).value=s

End Sub

Главное отличие процедур от функций: функции возвращают значение, которое может быть в дальнейшем использовано, а процедуры нет (если не прописать этого отдельно в коде).

Процедуры обработки событий

 Процедурой обработки события называют процедуру, выполняющуюся в ответ на событие, инициируемое пользователем или программой или генерируемое системой. Событием называют определенное действие, возникающее при работе с конкретным объектом. Microsoft Access реагирует на целый ряд событий: нажатие кнопки мыши, изменение данных, открытие или закрытие форм и т.д. Обычно события возникают в результате действий пользователя.

С помощью процедуры обработки события пользователь имеет возможность определить собственные отклики на события, происходящие в форме, отчете или элементе управления.

События, для которых чаще всего используются процедуры обработки событий:

  1. Click

  2. Change

  3. Open

  4. Close

Примеры: по щелчку на кнопку с именем cmdcancel закрывается соответствующая UserForm

Private Sub cmdcancel_Click()

Me.Hide

End Sub

Немного информации о бласти видимости процедур

По умолчанию все процедуры VBA (за исключением процедур обработки событий) определяются как открытые(Public). Это значит, что их можно вызвать из любой части программы — из того же модуля, из другого модуля, из другого проекта.

Объявить процедуру как Public можно так:

Public Sub Farewell()

или, поскольку процедура определяется как Public по умолчанию, то можно и так:

Sub Farewell()

Можно объявить процедуру локальной:

Private Sub Farewell()

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

Можно ограничить область видимости открытых процедур (тех, которые у вас определены как Public) в каком-то модуле рамками одного проекта. Для этого достаточно в разделе объявлений этого модуля вписать строку

Option Private Module

Если при объявлении процедуры использовать ключевое слово Static, то все переменные в этой процедуре автоматически станут статическими и будут сохранять свои значения и после завершения работы процедуры 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]