Процедуры и Функции Подпрограмма, задаваемая с помощью ключевого слова Sub (subprogram), называется “процедурой”, а с помощью ключевого слова Function - “функцией”. Процедуры Процедура – это самостоятельная программная единица VBA, включающая операторы описания ее локальных данных и исполняемые операторы. Процедуры Синтаксис описания процедур С [Private | Public] Sub <Имя процедуры> ([<Список формальных параметров>]) [Команды] [Exit Sub] [Команды] End Sub По умолчанию процедура считается общедоступной, то есть используется ключевое слово Public. Процедуры Список формальных параметров <Список формальных параметров> это список параметров, значения которых передаются в процедуру или возвращаются из процедуры при ее вызове. Разделителем в списке параметров является запятая. Процедуры Синтаксис описания списка формальных параметров С [ByVal| ByRef] <Имя переменной> As <Имя типа> Ключевые слова ByVal и ByRef определяют способ передачи параметра в процедуру. По умолчанию при описании используется ключевое слово ByRef. Процедуры Синтаксис описания списка формальных параметров ByVal означает, что параметр передается по значению. То есть, создается локальная копия переменной с начальным передаваемым значением и её изменения не отразятся на переменной, передавшей свое значение в процедуру при вызове. Процедуры Синтаксис описания списка формальных параметров ByRef означает, что параметр передается по ссылке. То есть, все изменения значения передаваемой переменной при выполнении процедуры происходят непосредственно с этой переменной. Процедуры Вызов процедуры С <Имя процедуры> [<Список фактических параметров>] <Список_Фактических_Параметров> – список параметров, передаваемых процедуре. Он должен соответствовать по количеству и типу списку параметров, заданному в процедуре при ее определении. Процедуры Пример описания процедур П Private Sub Пример(ByVal A As Byte, B As Integer, ByRef C As Long) A = A +1 B = B +A C = C +A End Sub Sub Проверка() Dim X As Byte, Y As Integer, Z As Integer X = 1 : Y = 10 : Z = 100 Пример X, Y, Z MsgBox X ‘Отобразится 1 MsgBox Y ‘Отобразится 12 MsgBox Z ‘Отобразится … End Sub Функции С [Private | Public] Function <Имя функции> ([<Список формальных параметров>]) As <Имя типа> [Команды] [<Имя функции> = <Выражение>] [Exit Function] [Команды] End Function Главное отличие функции от процедуры заключается в том, что функция возвращает значение, а <Имя типа> задает его тип. Функции Вызов функции С <Имя переменной> = <Имя функции> ([<Список фактических параметров>]) П Public Function Cube(ByVal N As Integer) As Long N=N+5 Cube = N ^ 3 End Function Sub Проверка() Dim X As Byte, Y As Integer X=1:Y=5 X = Cube(Y) + 5 MsgBox Y ‘Отобразится … MsgBox X ‘Отобразится … End Sub Использование именованных параметров VBA позволяет при вызове подпрограмм указывать значения параметров в произвольном порядке, используя их имена. П Private Sub Пример(ByVal A As Byte, B As Integer) A=A*2 B = B +A End Sub Sub Проверка() Dim X As Byte, Y As Integer X = 1 : Y = 10 Пример B := X, A := Y End Sub X=? Y=? Создание процедур и функций • • • • • Первый способ Открыть программный модуль; Набрать область видимости, Sub или Function, имя и аргументы; Нажать ENTER; VBA напишет закрывающий оператор; Написать текст подпрограммы. Второй способ Воспользоваться командой главного меню Insert-Procedure и задать все необходимые параметры. Использование пользовательских функций на рабочем листе 1. 2. 3. 4. Вызываем мастер функций командой Вставка-Функция… или кнопкой ; В окне Мастер функций в поле Категория выбрать Определенные пользователем; В списке Выберите функцию выбрать нужную функцию и нажать кнопку ОК; В появившемся окне Аргументы функции задать аргументы и нажать на кнопку ОК.