Пример макроса для вычисление премиальных по процентам

Составить таблицу начисления премиальных по итогам работы сети 4-хмагазинов за три месяца по следующему правилу:

-если продукции продано меньше чем на 60000 рублей, то премиальные составляют 2% от суммарной выручки магазина;

-за первое место дополнительно начисляется 4% премиальных, за второе 2%, за третье 1% от суммарной выручки магазина.

Сначала составим таблицу и заполним значениями как на рисунке.

Рисунок 4 - Расчетная таблица по магазинам

Поместим на лист Calc кнопку. Как вытащить кнопку на лист. Сначала с помощью ВидПанели инструментов-Элементы управления выведем нужную панель с элементами управления. Выбрать элемент управления в открывшемся окне — кнопка и поместить ее на листе. Чтобы назначить событие для данной кнопки, можно щелкнуть правой кнопкой мыши и выбрать во всплывающем меню «Элемент управления» События, назначить макрос обрабатывающий одно из событий (Выполнить действие). Предварительно нужно создать макрос, можете его назвать, например, OnClick, напомним, что он создается так же как и во Writer, нужно открыть окно редактора Basic и в нем записать пустую процедуру. В макросе для начала можно записать начальный код MsgBox «Hello». Затем на элементах управления перевести состояние из режима конструктора в режим выполнения, используя кнопку —«линейка-треугольник».

Вызов на кнопке контекстно-зависимого меню и выбор опции Элемент управления и Общие. В поле Текст заменяем стандартное имя на любое свое, это будет видимое название кнопки.

Рассмотрим кратко некоторые свойства объекта кнопка общие и для остальных визуальных объектов.

Свойство доступно (Enabled) объекта позволяет запретить или разрешить доступ к объекту. При свойстве со значением Falsе (Нет) кнопку нельзя нажимать, она отображается серым цветом.

Свойства Width (Ширина) и Height (Высота) – задают ширину и высоту объекта кнопка. Свойства Top (Позиция y) и Left (Позиция x) – задают смещения от верхнего и левого краев формы. BackColor (цвет фона) – цвет фона объекта. Font (Шрифт) – свойство шрифта объекта, шрифт надписей на объекте. Picture (Изображения) – путь к картинке. Visible (Видимость) – задает видимость объекта. WordWrap (разрыв слова) – перенос слов отображающихся в имени.

Следующий код для этой процедуры с использованием циклических структур. (Текст, начинающийся с кавычки – примечание).

Sub OnClick()

Dim Doc As Object

Dim Sheet, Cell As Object

'Пример получения доступа к текущему открытому листу по его номеру. '

Doc = StarDesktop.CurrentComponent

'Sheet = Doc.Sheets(1)

'получение доступа к листу по его имени

Doc = StarDesktop.CurrentComponent

Sheet = Doc.Sheets.getByName("Лист2")

‘цикл суммирования выручки за 3 месяца for i =1 to 4

Cell = Sheet.getCellByPosition(4, i)

Cell.Value = Sheet.getCellByPosition(1, i).Value + Sheet.getCellByPosition(2, i).Value + Sheet.getCellByPosition(3, i).Value

‘сделать сложение по столбцам с помощью цикла!!!!!

next i

‘Создание вспомогательного массива box ‘заполнение его значениями выручки

‘создание массива из четырех элементов вещественного типа с индексацией от 1 до 4.

Dim box(4) As Double

box(0) = Sheet.getCellByPosition(4, 0).Value

box(1) = Sheet.getCellByPosition(4, 1).Value

box(2) = Sheet.getCellByPosition(4, 2).Value

box(3) = Sheet.getCellByPosition(4, 3).Value

‘присвоение реализовать с помощью цикла!!!!!

‘Сортировка выручки за 3 месяца по убыванию методом «пузырька». ‘При этом в box(0) окажется максимальное значение выручки:

For I =0 to 3

For j=0 to 4-i

If box(j)<box(j+1) then

q = box(j+1)

box(j+1)=box(j)

box(j)=q

Endif

Next

Next

‘Реализовать сортировку методом простого выбора!!!!

‘Начисление процентов в зависимости от места For i=1 to 4

If Sheet.getCellByPosition(4, i).Value = box(0) Then Sheet.getCellByPosition(6, i).Value=4 If Sheet.getCellByPosition(4, i).Value = box(1) Then Sheet.getCellByPosition(6, i).Value=2 If Sheet.getCellByPosition(4, i).Value = box(2) Then Sheet.getCellByPosition(6, i).Value=1 If Sheet.getCellByPosition(4, i).Value = box(3) Then Sheet.getCellByPosition(6, i).Value=0 Next i

тоже самое реализовать, используя данные из таблицы и цикл, или из предварительно созданного массива, чтобы не использовать четыре строчки сравнения

Начисление процентов, если выручка за 3 месяца больше плановой выручки.

For i=1 to 4

If Sheet.getCellByPosition(4,i).Value>=Sheet.getCellByPosition(10,1).value then Sheet.getCellByPosition(5,i).value = 2

Else: Sheet.getCellByPosition(5,i).value =0

End if

Next i

Суммирование процентов

For i=1 to 4

Sheet.getCellByPosition(7,i).value = Sheet.getCellByPosition(5,i).value +

Sheet.getCellByPosition(6,i).value

Next

Расчет итоговой премии For i=1 to 4

Sheet.getCellByPosition(8,i).value = Sheet.getCellByPosition(4,i).value + Sheet.getCellByPosition(7,i).value/100

Next

End sub

Закроем редактор и нажмем на кнопку. Получим заполненную таблицу.

В результате в столбце E окажется сумма выручек за три месяца, в столбце F – процент, назначенный за перевыполнение плана, в столбце G – процент, назначенный в зависимости от занятого места, в столбце H – итоговый процент, в столбце I - величина премии.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: