
- •Министерство образования и науки российской федерации
- •Алгоритмизация и программирование на vba: структурное программирование
- •305040, Г. Курск, ул. 50 лет Октября, 94. Содержание
- •1Цель работы
- •2Общие сведения
- •2.1Структурное программирование
- •2.2Реализация подпрограмм на vba.
- •2.2.1Описание подпрограмм GoSub - Return
- •Синтаксис вызова и описания подпрограммы:
- •2.2.2Описание процедур и функций.
- •Области видимости имен
- •Время жизни переменной
- •Параметры
- •Описание процедур Синтаксис описания процедуры:
- •Синтаксис элемента СписокАргументов:
- •Описание функций Синтаксис описания функции:
- •2.2.3Вызов процедур и функций Вызов процедур Синтаксис вызова процедуры:
- •Вызов функций
- •Примеры Основные способы передачи параметров в процедуры.
- •Передача массива как параметра.
- •Использование необязательных параметров
- •Использование неопределенного количества параметров
- •2.2.4Рекурсивные процедуры и функции
- •2.2.5Использование функций пользователя в Excel
- •Алгоритм
- •Исходный текст
- •2.3.2Пример 2. Диагонали
- •Постановка задачи
- •Информационная структура задачи
- •Разработка алгоритма программы
- •Разработка исходного текста программы
- •Информационная структура задачи
- •Разработка алгоритма программы сортировки матрицы
- •Разработка исходного текста программы
- •Разработка алгоритма
- •Разработка исходного текста процедуры сортировки номеров строк в порядке возрастания минимальных значений.
- •Информационная структура задачи
- •Разработка алгоритма программы решения слау
- •Разработка исходного текста программы
- •Информационная структура
- •Разработка алгоритма
- •Разработка исходного текста процедуры
- •Процедура прямого хода.
- •Информационная структура
- •Разработка алгоритма
- •Разработка исходного текста процедуры
- •Процедура поиска главного элемента.
- •Информационная структура
- •Разработка алгоритма
- •Разработка исходного текста процедуры
- •Процедура обратного хода.
- •Информационная структура
- •Разработка алгоритма
- •Разработка исходного текста процедуры
- •6Варианты задач
- •7Список литературы
Описание функций Синтаксис описания функции:
[Public|Private][Static]Function<Имя>([СписокАргументов])[As<Тип>] [Инструкции] [Имя = Выражение] [Exit Function] [Инструкции] [Имя = Выражение] End Function
Синтаксис инструкции Function содержит те же ключевые слова, что и Sub.
Для возврата значения из функции следует в теле функции присвоить значение имени функции. Любое число таких инструкций присвоения может находиться в любом месте функции, возвращено будет последнее присвоенное значение.
2.2.3Вызов процедур и функций Вызов процедур Синтаксис вызова процедуры:
Call <ИмяПроцедуры> (<СписокФактическихПараметров>)
Значения ключевых слов
ИмяПроцедуры - имя вызываемой процедуры.
СписокФактическихПараметров - список аргументов, передаваемых процедуре. Он должен соответствовать списку, заданному в описании процедуры по количеству и типу элементов. Элементы списка разделяются запятой. Необязательные (Optional) параметры можно пропускать, отделяя их позиции запятыми.
Если требуется использовать несколько процедур из разных модулей с одинаковыми названиями, при их вызове после имени процедуры через точку надо указывать имя модуля, на котором они расположены: ИмяМодуля.ИмяПроцедуры.
Команду “Call” можно опускать, тогда VBA требует, чтобы список фактических параметров не заключается в скобки.
VBA позволяет вводить фактические параметры через имена аргументов в любом порядке. При этом после имени аргумента ставятся двоеточие и знак равенства, после которого помещается значение аргумента (фактический параметр).
Вызов функций
Функция при вызове возвращает значение результата в соответствии с описанным типом таким образом, что может вызываться в правой части оператора присваивания или в составе выражения.
Если нужно, чтобы функция только выполнила свои действия, и нет необходимости в возвращаемом значении, функция может быть вызвана в стиле процедуры. В этом случае, инструкция вызова функции, подобно вызову процедуры, состоит из имени функции и списка фактических параметров, который не заключается в скобки.
Примеры Основные способы передачи параметров в процедуры.
Функция
Function sq (ByVal x As Integer) As Integer 'целочисленная функция с именем “sq” и аргументом “x” целого типа, передаваемым по значению.
sq = x ^ 2 'вычисление возвращаемого значения
End Function 'конец функции
Процедура
Sub OutS (ByVal a As Integer, ByRef s As Integer) 'процедура с именем “OutS”, и целочисленными аргументами: “а”, передаваемым по значению, “s”, – по ссылке.
s = a ^ 2 'вычисление результата
End Sub 'конец процедуры
Примеры передачи параметров
Sub Main () 'главная процедура модуля
Dim x, y As Integer 'x, у — переменные, используемые в качестве фактических параметров
OutS 0, y 'Вызов процедуры с конкретными числами как фактическими параметрами
MsgBox CStr(y) 'вывод результата
x = 1 'присвоение значения переменной x
OutS x, y 'вызов процедуры с использованием переменных в качестве фактических параметров
MsgBox CStr(y) 'вывод результата
x = 2 'присвоение значения переменной x
Call OutS(x, y) 'вызов процедуры командой “call”
MsgBox CStr(y) 'вывод результата
y=sq(3) 'вызов функции
MsgBox CStr(y) 'вывод результата
Call OutS(sq(2),y) 'вызов процедуры с использованием значения функции в качестве фактического параметра
MsgBox CStr(y) 'вывод результата
OutS s:=y, a:=5 'вызов процедуры с указанием имён фактических параметров – допустимо в любом порядке для этого способа
MsgBox CStr(y) 'вывод результата
y=sq(x+sq(2)) 'использование выражения в качестве фактического параметра функции
MsgBox CStr(y) 'вывод результата
End Sub 'Конец процедуры