Самоучитель VBA


         

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



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

  • Выполните команду Сервис, Макрос, Редактор Visual Basic (Tools, Macro, Visual Basic Editor), чтобы открыть окно редактора Visual Basic.

  • Выполните команду Вставка, Модуль (Insert, Module) для создания листа модуля.

  • Выберите значок модуля в окне Проект (Project), чтобы активизировать окно редактора кода на листе модуля.

  • Наберите на листе модуля приведенную ниже процедуру.

    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



    Содержание  Назад  Вперед