. Читать онлайн книгу.
в этом разделе будут рассмотрены особенности создания и использования процедур и функций в программах на VBA.
Объявление процедур
Для объявления процедуры в VBA используется следующая конструкция:
[Private | Public] [Static] Sub Имя_процедуры [(Список_аргументов)]
[Инструкции]
[Exit Sub]
[Инструкции]
End Sub
Ключевые слова Private и Public данной конструкции задают область видимости процедуры.
• Public – применяется по умолчанию, позволяет создать процедуру, которую можно вызывать из любого места проекта VBA. При использовании в модуле класса она дает возможность создавать общую процедуру (метод) этого класса.
• Private – позволяет создать процедуру, которую можно вызывать только в том модуле VBA, где данная процедура объявлена. При использовании в модуле класса дает возможность создавать личную процедуру (метод) этого класса.
Если в объявлении процедуры используется ключевое слово Static, то значения всех локальных переменных данной процедуры сохраняются между ее вызовами. Это эквивалентно использованию инструкции Static вместо Dim при объявлении каждой локальной переменной внутри процедуры.
Имя_процедуры – это любой корректный идентификатор VBA, который будет употребляться в программе в случае необходимости вызова данной процедуры.
Список_аргументов – содержит описания аргументов, которые принимаются процедурой. Описания аргументов разделяются запятой и имеют следующий формат:
[Optional] [ByVal | ByRef] [ParamArray] Имя_аргумента[()] [As Имя_типа] _
[= Значение_по_умолчанию]
Пояснения элементов, используемых в данной конструкции, приведены в табл. 1.7.
Для выхода из процедуры предусмотрена инструкция Exit Sub. При ее достижении выполнение программы немедленно переходит к инструкции, следующей за вызвавшей процедуру инструкцией.
Ниже приведен пример процедуры, имеющей два аргумента, при этом второй аргумент необязательный и передается по ссылке:
Sub ProcedureExample(ByVal intNumber As Integer, Optional fFlag = True)
' Инструкции процедуры
…
End Sub
Проведенную процедуру можно модифицировать так, чтобы вместо необязательного второго параметра процедура принимала произвольное количество аргументов, из которых формируется массив:
Sub ProcedureExample(ByVal intNumber As Integer, ParamArray varArray())
' Инструкции процедуры
…
End Sub
Внимание!
Два приведенных примера процедур в программе на VBA одновременно присутствовать не могут. Это обусловлено тем, что язык VBA не поддерживает перегрузку процедур и функций (создание процедур и функций с одинаковыми именами, но с разными параметрами).
Вызов процедур
Для вызова процедуры в программе на VBA предусмотрена инструкция Call, формат которой приведен ниже:
[Call] Имя_процедуры [Список_аргументов]
Здесь элемент Имя_процедуры представляет собой идентификатор вызываемой процедуры. Если процедура принимает аргументы, то они должны быть указаны на месте элемента Список_аргументов через