Программа 20.14. Объявление процедур и функций
Программа 20.14. Объявление процедур и функций
Public Sub InitBookShops(arr() As Integer)
Dim i, str For i = LBound (arr) To UBound (arr)
str = "Ввести заказ для магазина №" & i arr(i) = InputBox(str) Next i End Sub
Public Function SaleAbility(arr() As Integer, _ '
Optional numOfBooks As Integer = 5000) As Boolean
Dim sumOfBooks
For Each elem In arr
sumOfBooks = sumOfBooks + elem Next If sumOfBooks < numOfBooks Then
SaleAbility = True Else
SaleAbility = False End If End Function
Замечание
Замечание 1
В теле функции SaleAbility имеется сознательно допущенная нерациональность. Вместо последнего условного оператора if. . .Then. . .Else можно и нужно написать эквивалентный, более эффективный оператор присваивания SaleAbility = sumOfBooks < numOfBooks. Этим замечанием мы специально акцентируем внимание читателя на подобных мелких, но важных "хитростях" хорошего стиля программирования.
Помимо вышеописанного объявления процедур и функций, в VBA существует особый вид процедур. Это процедуры реакции на событие, вызываемое системой или пользователем (см. главу 22 "Разработка приложения"). Например, для документов Word определены события open и close, для рабочих книг Еxcel — Beforesave и Beforedose, для объектов пользовательских классов — initialize и Terminate, нажатие кнопки диалогового окна тоже является событием и т. д. Пользователь способен сам создать процедуру реакции на подобные события, например попросить выводить сообщение "До свидания, спасибо за работу!" при закрытии документа.
Синтаксис подобной процедуры такой же, как и у обыкновенной, только в ее имени сначала указан объект, с которым будет связано событие, потом — символ подчеркивания (_), а затем — собственно имя события.