Самоучитель VBA
508 Resource Limit Is Reached

Resource Limit Is Reached

The website is temporarily unable to service your request as it exceeded resource limit. Please try again later.

Создание функций пользователя



Создание функций пользователя

VBA предоставляет также возможность пользователю создавать собственные функции, работать с которыми на рабочем листе можно при помощи мастера функций точно так же, как и с любой встроенной функцией. Рассмотрим один пример построения функции пользователя. На минуту представьте себе, что вы менеджер издательства по оптовой продаже книг. Для привлечения покупателей в вашем издательстве введена прогрессивная шкала цен. Если продается от 100 до 200 экземпляров книги, то скидка от ее отпускной цены составляет 7%, если продается от 201 до 300 экземпляров, то скидка составляет 10%, а если свыше 300 экземпляров — 15%. Кроме того, для постоянных клиентов предусмотрена дополнительная скидка в размере 5%. Создадим функцию пользователя с именем стоимость для расчета стоимости Партиикниг. Аргументы этой функции назовем ЦенаОднойКниги, Количество и Скидка. Для аргумента Скидка предусмотрим только два допустимых значения: 1 для постоянных клиентов и 0 в противном случае. Построим пользовательскую функцию стоимость следующим образом:

  1. Выполните команду Сервис, Макрос, Редактор Visual Basic (Tools, Macro, Visual Basic Editor), чтобы открыть окно редактора Visual Basic.
  2. Выполните команду Вставка, Модуль (Insert, Module) для создания листа модуля.
  3. Выберите значок модуля в окне Проект (Project), чтобы активизировать окно редактора кода на листе модуля.
  4. Наберите на листе модуля приведенную ниже процедуру.

Function Стоимость(ЦенаОднойКниги, Количество, Скидка)

'

' Вычисление стоимости без учета скидки для постоянных клиентов '

If Количество < 100 Then

'

' Продажа до 99 экземпляров

'

СтоимостьБезСкидки = ЦенаОднойКниги * Количество Else

If Количество <= 200 Then

'

' Продажа от 100 до 200 экземпляров

'

СтоимостьБезСкидки = ЦенаОднойКниги * Количество * 0.93

Else '

' Продажа от 201 до 300 экземпляров

'

If Количество <= 300 Then

СтоимостьБезСкидки = ЦенаОднойКниги * Количество * 0.9 Else

' Продажа свыше 300 экземпляров

'

СтоимостьБезСкидки = ЦенаОднойКниги * Количество * 0.85

End If

End If

End If

'

' Корректировка стоимости с учетом скидки для постоянных клиентов

If Скидка = 0 Then

Стоимость = СтоимостьБезСкидки Else

Стоимость = СтоимостьБезСкидки * 0.95

End If

End Function

Итак, функция пользователя стоимость создана. Она включена в категорию функций, определенных пользователем, мастера функций. Благодаря тому что в VBA допустимо применение русскоязычных имен, текст написанной программы ясен и прозрачен для понимания. Кроме того, это обеспечивает и простоту использования диалогового окна мастера функций для данной функции (Рисунок В.5). Названия всех параметров функции стоимость в окне мастера функций выводятся также на русском языке. Доступная для понимания структура диалогового окна позволяет использовать функцию стоимость любому пользователю, даже не владеющему VBA. Для ее применения достаточно знать только имя этой функции.

Рисунок В.5. Диалоговое окно для заполнения параметров функции Стоимость









Начало  Назад  

508 Resource Limit Is Reached

Resource Limit Is Reached

The website is temporarily unable to service your request as it exceeded resource limit. Please try again later.