Подпрограмма – представляет собой определенный набор операторов, составленный пользователем и расположенный отдельно от основной программы. Подпрограмма имеет следующий синтаксис:
[Private | Public] [Static] Sub Name([Arglist]) [As Type]
'комментарий, описывающий функцию
[Инструкции]
[Exit Sub]
[Инструкции]
End Sub
Имя подпрограммы может быть любым, однако лучше выбирать имя, соответствующее основному тексту подпрограммы. Имя должно быть уникально, т.е. никакая другая процедура не должна называться так же. Имя не должно содержать более 40 символов. Из подпрограммы могут быть вызваны другие процедуры. Тело подпрограммы не должно содержать:
Sub… End Sub
Function… End Function
Каждая подпрограмма должна иметь начало и конец. Когда VBA встречается оператор End Sub, он завершает работу подпрограммы и передает управление оператору основной программы, расположенному за оператором вызова данной подпрограммы.
Оператор Exit Sub позволяет прервать выполнение подпрограммы и передать управление в основную программу.
Если объявление подпрограммы дополнено ключевым словом Static, все локальные переменные становятся статистическими, т.е. не будут инициализироваться (обнуляться) вновь при следующем вызове данной подпрограммы:
Sub primer()
For tame = 1 To 4
Call number
Next tame
End Sub
Static Sub number()
n = n + 1
MsgBox n
End Sub
Таким образом, в приведенном примере переменная n последовательно принимает значения 1, 2, 3, 4. При отсутствии ключевого слова Static в заголовке процедуры number переменная n при каждом вызове процедуры number будет обнуляться и принимать значения 1, 1, 1, 1.