Возможности Excel можно расширить с помощью VBA, используя функции, разработанные пользователем.
Функции рабочего листа, определенные разработчиком, – это процедуры Function, включенные в модуль проекта. Эти функции можно использовать в формулах, хранящихся в ячейках рабочих листов, точно так же, как и стандартные функции Excel. В частности, если при вычислениях используются сложные формулы, их можно реализовать в виде функций, записывая в ячейках вместо этих формул вызовы соответствующих функций с параметрами. Чтобы функции были доступны в рамках проекта, их следует описать с ключевым словом Public. Функции, описанные в одной рабочей книге, можно использовать в других рабочих книгах, установив ссылки на них.
Ниже приведен пример использования пользовательской функции рабочего листа для вычисления надбавки в зависимости от разряда работника.
Для демонстрации возможности использования пользовательской функции рабочего листа создана рабочая книга, включающая три рабочих листа: «Список» (рис. 13, а), «Коэффициенты» (рис. 13, б) и «Надбавки» (рис. 13, в).
Надбавка вычисляется для каждого работника индивидуально. В качестве параметра в функцию передается ссылка на ячейку, в которой содержится фамилия работника. Порядок следования фамилий на рабочих листах «Список» и «Надбавки» одинаков. Коэффициенты, назначенные каждому разряду, на рабочем листе «Коэффициенты» упорядочены по возрастанию разрядов. Размер базовой надбавки всегда выбирается из одной и той же ячейки, расположенной на рабочем листе «Коэффициенты».
Для создания функции в проект добавлен модуль, в который затем вставлена функция:
Public Function Надбавка(ByVal CurrentCell As Range) As Single
Dim WR As Byte, _
RN As Byte, _
F As Single
RN = CurrentCell.Row
WR = Worksheets("Список").Cells(RN, 2).Value
F = Worksheets("Коэффициенты").Cells(WR + 1, 2).Value
Надбавка = F * Worksheets("Коэффициенты").Cells(9, 2).Value