русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вызов процедуры


Дата добавления: 2013-12-24; просмотров: 981; Нарушение авторских прав


Переход в подпрограмму и возвращение из подпрограммы

 

В VBA от первоначальных версий BASIC сохранилась конструкция подпро­граммы GoSub - Return, которая в настоящее время редко используется. Для полноты изложения вкратце напомним синтаксис этой инструкции.

 

Синтаксис:

 

GoSub строка

строка

Return

 

Аргумент строка может быть любой меткой строки или номером строки. В качестве метки строки может быть любая комбинация символов, начи­нающаяся с буквы и заканчивающаяся двоеточием.

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

 

 

Вызов процедуры Sub из другой процедуры можно произвести несколькими способами.

Первый способ вызова процедуры Sub:

ИмяПроцедуры СписокФактическихПараметров

 

ИмяПроцедуры Имя вызываемой процедуры
СписокФактическихПараметров Список аргументов, передаваемых процедуре. Он должен соответствовать списку, заданному в процедуре по количест­ву и типу.

 

Если требуется использовать несколько процедур с одинаковыми названиями; при их вызове после имени процедуры через точку надо указывать имя модуля, на котором они расположены. А именно,

 

ИмяМодуля . ИмяПроцедуры СписокФактическихПараметров

 

Второй способ вызова процедуры sub производится с помощью инструкции Call.

 

ИмяПроцедуры (СписокФактическихПараметров )

 

Обратите внимание, что в этом случае список фактических параметров за­ключается в скобки. В первом способе скобки не использовались.



VBA позволяет вводить фактические параметры через имена аргументов в любом порядке и опускать необязательные (optional). При этом после имени аргумента ставятся двоеточие и знак равенства, после которого по­мещается значение аргумента (фактический параметр).

Приведенный ниже пример показывает основные способы передачи пара­метров в процедуры.

Dim с As Double

' с - глобальный параметр

Function F(ByVal x As Integer) As Integer

F = x^2

End Function

Sub Assistant (ByVal a As Integer, ByVal b As Integer)

‘Процедура, находящая сумму двух чисел и выводящая результат в диалоговом окне

с = а + b

MsgBoxCStr(c)

End Sub

Sub Main()

‘Процедура, находящая сумму двух чисел и выводящая результат в диалоговом окне

Dim x, у As Double

‘ x, у - переменные, используемые в качестве фактических параметров

' Вызов процедуры с конкретными числами как фактическими параметрами

Assistant 1, 3

' Первоначальное присвоение переменным значений, с последующим вызовом процедуры

х = 1: у = 1

Assistant x, у + 2

' Использование функции как фактического параметра

‘ I

х = 1: у = 3

Assistant F(x), у

'

‘Вызов процедуры с указанием фактических параметров по имени

Assistant a:=l, b:=3

End Sub

 

Приведем пример процедуры с необязательными параметрами. Процедура сторонатреугольника позволяет найти длину недостающей стороны прямо­угольного треугольника, где переменные A и B отведены под длины катетов, а переменная С — под гипотенузу. Например, формула =СторонаТреугольника(;В2;С2)

вычисляет катет А по введенным в ячейки В2 и С2 длинам катета В и гипотенузы С. При работе с необязательными переменными необходимо использовать функцию IsMissing,

возвращающую значение True, если соответствующий аргумент не был передан в процедуру, и False в противном случае.

 

Function СторонаТреугольника (Optional A, Optional В, Optional С)

If Not (IsMissing(A)) And Not (IsMissing(В)) Then

СторонаТреугольника = Sqr(А^2 + В^2)

End If

If Not (IsMissing(A)) And Not (IsMissing(C)) Then

СторонаTреугольника = Sqr(С^2 – A^2)

End If

If Not (IsMissing(B)) And Not (IsMissing(C)} Then

Сторонатреугольника = Sqr (C^2 – B^2)

End If

EndFunction

 

Назначение значений по умолчанию необязательным параметрам

 

Для необязательного параметра можно определить значение по умолчанию. В следующем примере, если значение параметра ь не передано в функцию, то ему присваивается указанное по умолчанию значение 8.

 

Function Сумма (a As Double, Optional b As Double = 8)

Сумма = a + b

End Function

 

Использование неопределенного количества параметров как правило, количество передаваемых параметров в процедуру совпадает с количеством определенных у этой процедуры параметров. Однако ключевое слово ParamArray предоставляет возможность ввода в процедуру произволь­ного, заранее не указанного числа параметров (например, как это происхо­дит при использовании функции рабочего листа СУММ (sum)). В качестве примера приведем процедуру, которая выполняет то же действие, что и функция рабочего листа СУММ. Отличием функции суммапользователя от сумм является то, что в ней в каждое поле ввода диалогового окна мастера функций можно вводить только либо число, либо ссылку на ячейку, а не на Диапазон, как при работе с функцией СУММ.

 

Function СуммаПользователя (ParamArray Массив ())

s = 0

For Each a In Массив

s = s + a

Next а

CуммаПользователя = s

End Function

 



<== предыдущая лекция | следующая лекция ==>
Процедура | Время жизни переменной


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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