Процедуры-подпрограммы (Sub)

Общие процедуры

Общие процедуры имеют стандартное оформление:

[Область видимости] SubИмяПроцедуры(СписокПараметров)

[раздел описаний (переменных и констант)]

тело процедуры (операторы)

End Sub

Для области видимости можно указать либо Public, если процедура глобальная, либо Private, если процедура локальная. Процедура локальная (Private), если она доступна (видна) только внутри данного модуля и не может быть вызвана из других модулей; процедура глобальная (Public), если она доступна (видна) из других модулей.

Оператор Sub - объявление процедуры, задается имя, указывается список параметров, передаваемых при вызове процедуры из программы (может отсутствовать). Тип каждого из аргументов задается следующим за именем аргумента сочетанием As тип, где тип может быть любым допустимым в VBA типом данных или классом объекта. Каждому оператору Subобязательно соответствует End Sub.

Раздел описаний (переменных и констант) не является обязательным в процедурах. Но если в верхней части окна модуля вы увидите оператор Option Explicit, то вы обязаны описывать все переменные и константы.

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

Заметим, что макрос в VBA является процедурой типа Sub, не имеющей (т.е. не требующей) параметров. Процедуры пользователя типа Sub, у которых нет параметров, выполняются (также, как и макросы) либо из редактора VB, либо из VBA-приложения, а кроме того их можно вызвать из другой процедуры.

Выполнить же процедуру типа Sub, у которой аргументы есть, можно только вызвав её из другой процедуры.

Т.о., при написании собственной процедуры вы можете воспользоваться процедурами (и макросами), написанными другими пользователями. В свою очередь ваша процедура может быть использована в других приложениях.

Если процедура имеет аргументы, то она будет требовать эти аргументы при выполнении своей работы. Вызывается процедура с помощью оператора Call, вслед за которым должно следовать имя процедуры и список её параметров в скобках. Вместо входных параметров могут стоять их значения. Допускается и бесскобочная запись оператора вызова (при этом ключевое слово Call – имя оператора – не используется).

Процедуры обработки событий

Процедуры обработки событий связаны с конкретными объектами и событиями и выполняются, когда эти события происходят. Событие (event) – это нажатие командной кнопки, выполнение директивы меню, открытие или закрытие таблицы Excel и т.п. Имя такой процедуры состоит из имени объекта и события, которые объединяются символом подчеркивания. Процедуры обработки событий имеют следующий синтаксис:

Private SubИмяОбъекта_Событие( )

тело процедуры (операторы)

End Sub

Объединяет общие процедуры и процедуры-события то, что в их определениях используется ключевое слово Sub. Принципиальное отличие общей процедуры от процедуры-события состоит в том, что для общей процедуры пользователю нужно придумать имя, а имя процедуры-события создаёт сама система VBA.

Процедуры-функции (Function)

Встроенные функции

Встроенные функции VBA обеспечивают сложные виды обработки данных, избавляя пользователя от разработки собственных программ. Как правило, встроенные функции VBA возвращают отдельные значения (не массивы). По назначению встроенные функции объединяются в следующие группы: финансово-математические; функции преобразования типа; математические функции; функции статуса; функции обработки строк; функции даты и времени; функции для работы с массивами; функции для работы с файлами; системные функции; прочие функции. Разберем некоторые наиболее часто употребляемые функции.