Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA лекции.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
716.29 Кб
Скачать

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

Процедура – это самостоятельная программная единица VBA. Процедура имеет следующую структуру:

Sub ИмяПроцедуры (список формальных параметров)

Описания локальных переменных

Инструкции и операторы

End Sub

Бывают процедуры без параметров, тогда в первой строке после имени процедуры ставят пустые скобки. Если процедура обрабаты­вает какое-то событие, происходящее с объектом, то по умолчанию ее имя состоит из имени объекта и события, разделенных символом под­черкивания. Например, процедура CommandButton1_Click( ) выпол­няется при щелчке мышки по командной кнопке с номером 1. Код такой процедуры привязан к объекту и записывается в окне кода (см. рис. 1.4). Для каждого Листа Excel и для каждой формы существуют отдельные окна кода.

Код процедуры может быть записан и в отдельном мо­дуле. Если процедура имеет параметры, то они должны быть описаны в заго­ловке процедуры. Например:

Sub test ( x As Single, y As Single )

Пример 1. Напишем процедуру, которая будет спрашивать имя пользователя и выводить приветствие. Результат – на рис. 1.7.

Sub привет( )

Dim name As String

name = InputBox("Как Вас зовут?")

MsgBox "Привет, " & name & " !"

E nd Sub

Рисунок 1.7 – Образец работы программы "привет"

Процедуру можно вызвать из другой процедуры. При этом формальные параметры надо заменить фактическими. Формальные и фактические параметры должны быть согласованы, то есть:

  • количество формальных и фактических параметров должно быть одинаковым;

  • порядок формальных и фактических параметров должен быть одинаковым;

  • типы формальных и фактических параметров, стоящих на одинаковых местах, должны совпадать;

  • имена формальных и фактических параметров могут быть разными.

Чтобы выполнить процедуру, легче всего кликнуть мышкой в любом месте ее кода и нажать кнопку Run Sub/UserForm на панели инструментов (рис. 1.2). Для вызова процедуры из другой процедуры надо сначала записать ее имя, а после пробела ввести значения фактических параметров через запятую.

Пример 2. Запишем процедуру, которая вычисляет квадрат и куб числа. Вызовем ее из другой процедуры, которая вводит число и выводит результаты (см. рис. 1.7).

Sub степень(x As Single, x2 As Single, x3 As Single)

x2 = x * x

x3 = x2 * x

End Sub

Sub пример2()

Dim a As Single, a2 As Single, a3 As Single

a = InputBox("Введите число")

степень a, a2, a3

MsgBox "Ответ: x ^ 2=" & Str(a2) & " x ^ 3=" & Str(a3)

End Sub

Р исунок 1.7 – Результаты работы программы "пример2"

Функция позволяет вычислять одно значение от нескольких ар­гументов. Код функции записывается в модуле. Синтаксис функции:

Function ИмяФункции (список формальных параметров) As Тип

Описания локальных переменных

Инструкции и операторы

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

End Function

Тип результата вычисления функции должен указываться явно в заголовке функции. ИмяФункции должно принимать значение ре­зультата внутри тела функции.

Вызов функции осуществляется из процедуры или с Листа Excel.

Синтаксис вызова функции из процедуры:

Переменная = ИмяФункции (список фактических параметров)

Список формальных и фактических параметров должны соот­ветствовать друг другу по тем же правилам, что и у процедур.

Чтобы вызвать функцию с Листа Excel, надо в той клетке, где должен быть результат, записать выражение такого вида:

= ИмяФункции (список адресов ячеек, содержащих параметры)

Пример 3. Запишем функцию, которая вычисляет куб числа, и вызовем ее из процедуры.

Function Куб ( x As Single ) As Single

Куб = x * x * x

End Function

Sub пример3( )

Dim a As Single, b As Single

a = InputBox("Введите число")

b = Куб(a)

MsgBox "Куб числа " & Str(a) & " = " & Str(b)

End Sub

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