При написании длинных программ рационально использовать подпрограммы.
Подпрограмма – это отдельный блок, который может восприниматься как отдельная программа. В VBA существует два вида подпрограмм: подпрограмма-процедура и подпрограмма-функция.
Подпрограмма-процедура
Подпрограмма-процедура может вычислять одно значение, несколько значений или не производить никаких вычислений, а использоваться в качестве программы, выводящей на экран текст или рисунки.
Синтаксис:
[ Public | Private ] [ Static ] Sub Имя([Список аргументов])
Тело подпрограммы
End Sub
Элементы описания процедуры рассмотрены в табл. 10.
Таблица 10
Public | Указывает, что процедура Sub доступна для всех других процедур во всех модулях |
Private | Указывает, что процедура Sub доступна для других процедур только того модуля, в котором она описана |
Static | Указывает, что локальные переменные процедуры Sub сохраняются в промежутках времени между вызовами этой процедуры |
Список аргументов | Список переменных, которые передаются в процедуру Sub при ее вызове. Имена переменных разделяются запятой |
Вызов процедуры Sub из другой процедуры можно произвести следующим образом:
Имя процедуры [Список фактических параметров]
Список фактических параметров – это список аргументов, передаваемых процедуре. Он должен соответствовать списку, заданному в описании процедуры, по типу и количеству.
Пример
Основные способы передачи параметров в процедуре.
Option Explicit
Sub PR27()
Dim c As Double
Dim a As Integer
Dim b As Integer
B = 12
For a = 1 To 5
Summa a, b, c
MsgBox("c=" & c)
Next a
End Sub
Sub Summa(ByVal a1, b1 As Integer, ByRef s As Double)
S = a1 + b1
End Sub
В данной программе мы сталкиваемся с несколькими видами параметров:
· глобальные параметры – c, a, b;
· локальные параметры – s, a1, b1;
· параметры, передающиеся по значению – a, b;
· параметры, передающиеся по ссылке – s;
· фактические параметры – a, b, c;
· формальные параметры – a1, b1, s.
Рассмотрим каждый из этих видов параметров.
Локальные и глобальные параметры (переменные)
Параметры, которые используются внутри процедуры, называются локальными, а параметры, которые могут использоваться в любом месте главной программы и в процедуре, называются глобальными.