Читаем VBA для чайников полностью

Далее идет ключевое слово Sub, которое просто указывает на то, что здесь определяется процедура типа Sub. За ним следует имя процедуры, которое может быть каким угодно, подчиняясь лишь правилам присвоения имен, приведенным дальше в настоящей главе.

<p>Пропущенные аргументы</p>

Завершается объявление парой скобок. Зачем они нужны, если внутри них ничего нет?

Эти скобки могли бы содержать аргументы, если бы у процедуры они были. Аргументы - это элементы данных, которые процедура намеревается получить при вызове. В данном случае процедура не имеет аргументов, поэтому она не только внешне такая приятная, но и в скобках ничего не содержит. Дальнейшее обсуждение аргументов продолжится позже в разделе Привлекательные аргументы'.

Снова повторю, что макрос в VBA по определению представляет собой процедуру типа

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

<p>Вызов процедур типа Sub</p>

Любую процедуру - независимо от того, имеет она аргументы или нет - можно выполнить, или вызвать, из другой процедуры. Чтобы вызвать процедуру типа Sub, используйте оператор, представляющий собой имя вызываемой процедуры, как в следующем фрагменте программного кода. Строка, в которой напечатано МойкаМоейСтаройМашины, вызывает процедуру типа Sub:

* * *

МояСтараяМашина = Доблесная

МойкаМоейСтаройМашины

ЧислоПосященийМойки = ЧислоПосященийМойки +1

* * *

<p>Процедуры типа Function</p>

Процедура типа Function, в принципе, работает так же, как и процедура типа Sub, но в данном случае ее главная задача - вычисление некоторого значения. Когда процедура типа Function завершит свою работу, она возвратит это значение в вызывающую процедуру, которая сможет использовать его в дальнейших вычислениях.

Вот пример процедуры типа Function:

Public Function ДеФункция(х As Integer, y As Integer )

Dim Z AS Integer

z = x + у

ДеФункция = x ́ z

End Function

Очевидно, строение процедуры типа Function очень похоже на строение процедуры типа Sub. Объявление начинается с необязательного ключевою слова, определяющего область видимости процедуры (в данном случае это Public). Далее идет ключевое слово Function, определяющее тип процедуры, за ним размещается имя процедуры и, наконец, ее аргументы. Аргументы будут обсуждаться в разделе Привлекательные аргументы, но уже на этом примере вы видите, как они используются. Подобно процедуре типа Sub, в конце процедуры типа Function находится завершающий оператор End Function.

Здесь я вынужден сделать паузу, чтобы обратить ваше внимание на то, что VBA содержит немалое количество встроенных функций. Подобно процедурам типа Function, функции VBA возвращают в вызывающую процедуру некоторое значение. Вызываются функции и процедуры типа Function тоже одинаково.

Единственным различием между функциями и процедурами типа Function является то, что для функций вам не нужно печатать программный код! Обзор функций, доступных в VBA, вы найдете в главе 11.

<p>Отличия процедур типа Function от процедур типа Sub</p>

Между процедурами типа Function и типа Sub есть одно существенное отличие: в процедуре типа Function обязательно где-то должен присутствовать по крайней мере один оператор, задающий значение этой функции. При этом используется имя процедуры, как будто это обычная переменная. В предыдущем примере присвоение значения осуществляется в строке ДеФункция = х ́ z. После того как программный код в этой строке будет выполнен, ДеФункция будет содержать значение, которое возвратится в вызывающую процедуру для дальнейшего использования там.

<p>Вызов процедур типа Function</p>

Процедуру типа Function можно выполнить, только вызвав ее из другой процедуры.

Как правило, это делается путем присваивания имени данной функции некоторой переменной. В следующем примере переменная ZСтепень получает значение, возвращенное процедурой ДеЗункция:

ZСтепень = ДеФункция(3, 4)

После выполнения этого оператора переменная ZCTeneHb будет содержать значение, вычисленное процедурой ДеФункция, - процедурой типа Function - и этим значением будет 3 . Обратите внимание, что в данном случае процедуре передаются аргументы, заключенные в скобки после имени процедуры.

<p>Привлекательные аргументы</p>

Аргументы представляют значения, которые предполагается передавать от одной процедуры к другой. Аргументы назначаются процедуре тогда, когда необходимо, чтобы эта процедура изменяла свое поведение в зависимости от тех значений, которые она получает при ее вызове. Аргументы могут иметь и процедуры типа Sub, и процедуры типа Function.

Рассмотрим снова процедуру ДеФункция:

Public Function ДеФункция(х As Integer, y As Integer )

Dim Z AS Integer

z = x + у

ДеФункция = x ́ z

End Function

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных