Основы программирования на языке Visual Basic for Applications (VBA). Подпрограммы-процедуры и подпрограммы-функции. Модульная структура программы.

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

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

В языке VBA подпрограммы делятся на два вида: подпрограммы-функции и подпрограммы—процедуры, которые подразделяются на две группы: встроенные и определяемые пользователем.

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

Функции Многократно повторяющуюся часть программы можно оформить подпрограммой - функцией.

Общий вид функции пользователя:

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

Раздел операторов

End Function

Вызов функции. Общий вид вызова функции:

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

Процедуры. Кроме функций пользователя, на листе модуля можно записывать процедуры. Процедура, как и функция, состоит из двух частей: описания и вызова функции.

Описание процедуры. Синтаксическая структура описания имеет следующий вид:

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

Тело процедуры

End Sub

Процедура начинается с заголовка процедуры Sub

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

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

Список фактических параметров от имени_Процедуры записывается через пробел, и отделяются друг от друга запятой, в круглые скобки не заключаются. В отличие от функций пользователя, процедуры нельзя вызывть из ячеек рабочего листа.
Функция передаёт в главную программу при её вызове только одно значение, а процедура может передавать одно или несколько значений при её вызове.
Option Explicit
Dim x As Integer, y As Integer, p As Integer
Function F(x As Integer) As Single
F = 4*x / (3-2*2)
End Function
Sub My_pr()
Cells(1,1) = “ТАБЛИЦА”
Cells(2,1) = “x”
Cells(2,1) = ”y”
p = 3
For x = 0 To 12
If 3 – 2*x = 0 Then GoTo M
y = F(x)
Cells(p, 1) = x
Cells(p, 2) = y
p = p + 1
M: Next x
End Sub