Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Excel_new.doc
Скачиваний:
97
Добавлен:
22.02.2015
Размер:
5.05 Mб
Скачать
      1. Вызов процедуры

Как правило, процедуры закрепляются за командными кнопками, меню, клавишами клавиатуры и др. Из других программных процедур или функций процедура вызывается по имени. Фактические параметры (в отличие от СИ) записываются без скобок. Кроме упорядоченного списка, разделенного запятыми, фактические параметры можно передавать поименованным списком, где используется имя переменной из вызываемой процедуры (формальный параметр), затем знак присваивания (:=) и далее фактический аргумент. Аргументы при этом могут и не соответствовать порядку, указанному в названии процедуры. Использование поименованных списков удобно для процедур с большим количеством аргументов, где не всегда очевидно, какое значение какой переменной передается.

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

[Горсети.xls]. [Mod1].mysub

Для того чтобы сделать процедуру недоступной из другого модуля, используйте ключевое слово Private, например Private Sub Proc1().

Примеры процедуры с аргументами

Sub Multyply (Val1 As Single, Val2 As Single, Product As Single)

Product= Val1* Val2

End Sub

Sub main

Result As Single

Multyply 5,7, Result ' Обращение к функции Multyply с параметрами 5,7, Result

Debug.Print Result ' Вывод результата на отладочную панель

End Sub

Вызов процедуры Multyply можно записать с поименованным списком:

Multyply Result:= Product, Val1:=5, Val2:= 7

Самостоятельная работа

  • Выполнить отладку данных функций. Проверить их работу.

      1. Использование необязательных аргументов

Необязательные аргументы записываются в конце списка аргументов. Перед ними ставится ключевое слово Optional. Переменная справа от Optional должна иметь тип Variant.

Пример

Sub Multyply (Product As Single, Val1 As Single, Optional Val2)

If IsMissing (Val2) Then Val2=10 ' проверка: задана ли переменная Val2?

Product= Val1* Val2

End Sub

Часто процедуры имеют неопределенное число аргументов, причем заранее неизвестно сколько. В этом случае перед последним аргументом помещается ключевое слово ParamArray, в результате чего последний аргумент преобразуется в массив типа Variant.

Пример

Sub Multyply (Product As Single, ParamArray Value())

Dim Val As Variant

Product=1

For Each Val in Value ' Цикл для объектов : для каждого элемента в массиве Value…

Product= Product * Val

Next Val

End Sub

Самостоятельная работа

  • Напишите и выполните отладку процедуры, которая складывает два аргумента и возвращает результат в третьем. Вызов данной процедуры осуществляется из другой процедуры.

  • Напишите и выполните отладку процедуры ss1, которая складывает список аргументов - действительных чисел и возвращает сумму (руководствуйтесь приведенным выше аналогом). Выполните расчеты для двух, трех, четырех аргументов.

  • Во втором модуле напишите аналогичную процедуру ss2 для целых чисел. Затем в другой рабочей папке напишите и выполните отладку процедуры, которая использует как ss1, так и ss2.

  • Создайте стартовую процедуру, которая выполняется при старте Excel и печатает "Добрый день, господа студенты!" где-нибудь в центре экрана.

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