Последовательность выполнения Упражнения 17

Лабораторная работа №5 Процедуры-функции

Функции VBA

Функция - это подпрограмма, которая выполняет действия и возвращает единственное значение. В VBA различают следующие виды функций (см.п. 2.13. учебного пособия Теория_к_лаб_5.doc,):- встроенные функции,- функции, определённые пользователем.

Встроенные функции

- математические функции,- функции преобразования данных,- функции даты и времени,- строковые функции.

Форматы функций и действия, выполняемые ими, приведены в
п.2.13.1.Встроенные функции учебного пособия Теория_к_лаб_5.doc,,

Упражнение 16

Скопируйте в модуль VBA процедуры, находящиеся
в п. 2.13.1.5. Примеры использования функций VBA учебного пособия Теория_к_лаб_5.doc,: Встр_функции_1, Встр_функции_2,…, Встр_функции_8, – выполните их, проанализируйте результаты выполнения процедур, замените по вашему выбору значения констант, являющихся значениями аргументов функции и/или введите значения переменных, являющихся аргументами функций, при помощи функции
InputBox. Согласуйте свой выбор с преподавателем. Например, изменённая процедура Встр_функции_8 может иметь вид:

Sub Встр_функции_8()

Dim Дата As Date

Дата = InputBox("Введите дату", "Ввод даты")

MsgBox Format(Дата, "Long Date") & vbCr _

& Format(Дата, "Medium Date") & vbCr _

& Format(Дата, "Short Date") & vbCr _

& Format(Дата, "dd mmmm yy") & vbCr _

& Format(Дата, "dd mm yy") & vbCr _

& Format(Дата, "dd mm yyyy")

End Sub

Функции, определённые пользователем

Функция, определённая пользователем, называемая также процедурой-функцией, – это особый вид процедуры VBA, возвращающей результат. Пользовательские процедуры-функции, как и встроенные функции VBA, могут иметь необязательные и именованные аргументы. Для записи функции-процедуры нельзя использовать макрорекордер, хотя можно редактировать записанный рекордером макрос и превращать его в функцию-процедуру.

Подробное описание функции, определённой пользователем, и пример такой функции приведён в п.2.13.2. Функции, определённые пользователем учебного пособия Теория_к_лаб_5.doc .



Упражнение 17

Суть упражнения состоит в следующем. В приведённой ниже таблице

Суммы комиссионных
Компания Продажи Комиссионные Оплата
ЮГ 5 000,00р.    
СЕВЕР 7 000,00р.    
ВОСТОК 12 000,00р.    
ЗАПАД 1 600,00р.    

требуется подсчитать суммы комиссионных и оплаты. Суммы комиссионных подсчитываются в процедуре-функции Комиссионные, обращение к которой осуществляется в процедуре Расчёт_Комиссионных при помощи инструкции

Cells(i, 3) = Комиссионные(Cells(i, 2)),

параметром которой является сумма продаж, находящаяся в ячейках Excel B3÷B6 (Cells(3, 2) – это ячейка в строке 3 в столбце 2 (B3) и т.п.).

Тексты процедуры Расчёт_Комиссионныхи функции Комиссионные приведены в п.2.13.2.1. Пример функции учебного пособия
Теория_к_лаб_5.doc,.

Последовательность выполнения Упражнения 17 - student2.ru

Ниже приведён пример заполненной таблицы исходными данными в столбцах Компания и Продажи.

Последовательность выполнения Упражнения 17 - student2.ru

Последовательность выполнения Упражнения 17

1.3.1.Скопировать в модуль VBA процедуру-программу
“Расчёт_Комиссионных” и процедуру-функцию “Комиссионные” из пособия Теория_к_лаб_5.doc ,п.2.13.2.1.

1.3.2.Ввести заголовок таблицы в ячейку A1.

1.3.3.Ввести заголовки таблицы Компания, Продажи, Комиссионные, Оплата в ячейки A2, B2, C2, D2.

1.3.4.Заполнить исходными данными из примера колонки Компания и Продажи.

1.3.5.Выполнить процедуру “Расчёт_Комиссионных”. В результате должна быть получена приведённая ниже таблица.

1.3.6.Суммы комиссионных
Компания Продажи Комиссионные Оплата
ЮГ 5 000,00р. 5 250,00р.
СЕВЕР 7 000,00р. 7 370,00р.
ВОСТОК 12 000,00р. 12 710,00р.
ЗАПАД 1 600,00р. 1 680,00р.

1.3.7.Проанализировать результаты выполнения процедуры и сравнить их с инструкциями процедуры-программы
“Расчёт_Комиссионных” и процедуры-функции “Комиссионные”.

1.3.8.Составить макрос, который выводит на текущий лист Excel приведённую ниже таблицу без исходных данных, которые должны вводиться в процессе работы с таблицей.

1.3.9. Последовательность выполнения Упражнения 17 - student2.ru

Макрос создания этой таблицы целесообразно создать путём записи действий пользователя, аналогично п. 2.1 или 2.2. настоящего пособия. Необходимо записать в этот макрос следующие действия пользователя:

- Ввод заголовка таблицы “Суммы комиссионных”.

- Отформатировать заголовок жирным шрифтом.

- Объединить ячейки A1÷D1.

- Отформатировать жирным курсивом заголовки колонок таблицы.

- Установить автоподбор ширины колонок таблицы.

- Дать этому макросу название, например,
ФорматированиеТаблицы.

- Запустить макрос на выполнение и при необходимости его отладить.

- Проанализировать полученный макрос и, по возможности, упростить его, удалив инструкции, устанавливающие параметры по умолчанию.

1.3.10. Вставить инструкцию Call <Имя-макроса> перед инструкцией End Sub в процедуре “Расчёт_Комиссионных”.

1.3.11. Удалить полученные ранее таблицы, сформировать таблицу:

Суммы комиссионных
Компания Продажи Комиссионные Оплата
ЮГ 5 000,00р.    
СЕВЕР 7 000,00р.    
ВОСТОК 12 000,00р.    
ЗАПАД 1 600,00р.    

и выполнить процедуру “Расчёт_Комиссионных”.

1.3.12. Составить пользовательскую функцию “Комиссионные_2”, в которой вместо инструкции If…Then использовать инструкцию Case, обратиться к ней в процедуре “Расчёт_Комиссионных”, запустить эту процедуру на выполнение и отладить в случае неоюходимости.

Наши рекомендации