Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика в экономике Часть 2 Excel.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.66 Mб
Скачать

Тема 8. Vba: Процедуры. Создание пользовательских форм

С помощью VBA можно:

  • создать собственное диалоговое окно для ввода или вывода информации;

  • изменить меню приложений пакета Microsoft Office;

  • управлять другими приложениями MS Office;

  • объединить данные из нескольких приложений пакета MS Office в одном документе;

  • создавать или изменять web - страницы.

В данном пособии уделено большое внимание непосредственному созданию пользовательских процедур для обработки объектов Excel, проектированию пользовательских форм и управлению ими.

Основными понятиями VBA, как и любого ООЯП являются объект, метод, свойство и событие. Поскольку в функции не могут содержаться команды, связанные с обработкой объектов, именно в этом разделе остановимся на основных понятиях языка.

Объектом VBA считается видимый элемент, имеющий представление на экране, на который можно некоторым образом воздействовать и изменять его характеристики.

Методом является действие, выполняемое над объектом, например удаление, копирование.

Свойство – это атрибут объекта, определяющий его характеристики, например тип шрифта, заливка ячейки.

Событие – действие, распознаваемое объектом или средой программирования, на который можно запрограммировать отклик, например щелчок мышкой, нажатие на клавишу, перемещение курсора мыши, наступление момента времени.

Суть программирования на VBA как раз и заключается в этих двух понятиях: событие и отклик на него. Поэтому действия, происходящие в системе, являются событиями, отклики на них – процедурами.

Процедура – это самостоятельная часть кода, которая имеет имя и может содержать аргументы, выполнять последовательность инструкций и изменять значения своих аргументов. Как правило, процедура предназначена для решения конкретной задачи.

Процедура имеет вид:

[Private]/ [Public] Sub имя [(список аргументов)]

[инструкции]

[Exit Sub]

[инструкции]

End Sub

Private – указывает на доступность процедуры другим процедурам только данного модуля; Public - указывает на доступность процедуры другим процедурам во всех модулях.

В проекте (комплекс объектов книги, форм и модулей) автоматически создаются модули для каждого листа книги и книги в целом. Пользователь также имеет возможность добавлять модули для создания процедур. Кроме того, модули автоматически создаются для каждой формы.

Пользовательская форма (UserForm) представляет собой диалоговое окно в стиле Windows-интерфейса для ввода-вывода информации с помощью различных ЭУ.

Сами процедуры создаются аналогично функциям. Для создания процедур активизируется редактор VBA (Alt + F11), для записи процедур добавляется в проект модуль (Insert/Module), при необходимости создания диалогового окна выполняется команда Insert/ UserForm.

Пример 5. Разберем задачу автоматизированного формирования расчетного листа средствами VBA.

Добавив в проект пользовательскую форму, спроектируем ее путем добавления различных ЭУ (рис. 13) и изменением свойств всех объектов в окне свойств (View/ Properties Window).

Для создания процедур обработки событий (нажатие на кнопки, выбор ФИО) на соответствующем ЭУ или самой форме требуется выполнить двойной щелчок. На рис.14 представлены необходимые нам процедуры для решения поставленной задачи.

Рис. 13. Пользовательская форма для формирования расчетного листа.

Для возможности решения задачи (выполнения процедуры) с помощью панели инструментов на соответствующем рабочем листе необходимо создать кнопку (Разработчик/ Вставить/ ЭУ формы/ Кнопка). При появлении диалогового окна (рис. 15) можно изменить название макроса, далее активизируем кнопку Создать для записи команд языка.

Рис.14. Процедуры формы

Процедура обработки такого события, как нажатие на кнопку, создается автоматически. Ее требуется дополнить всего одной командой (рис. 16).

На рис. 17 представлена сама кнопка и результаты работы процедур по автоматизированному формированию расчетного листа. Название кнопки на «Расчетный лист» изменяется по контекстному меню.

Рис.15 Создание макроса.

Рис. 16. Процедура активизации формы.

Рис. 17. Кнопка активизации формирования расчетного листа

В Excel существует возможность упростить создание процедур с помощью макрорекордера. Макрорекордер - магнитофон для записи макроса (процедуры), работающий по принципу «делай, как я». Все действия пользователя протоколируются и в дальнейшем могут быть проиграны. Т.е., Excel записывает все производимые над рабочим листом действия и интерпретирует их как последовательность команд языка. Данный метод позволяет быстро освоить язык VBA, изучая текст созданных процедур. Макрорекордер незаменим при необходимости форматирования объектов.

Алгоритм работы с макрорекордером:

  • начать запись (Разработчик/ Запись макроса);

  • выполнить требуемые действия;

  • остановить запись (Разработчик / Остановить запись)

Перейдя в редактор VBA, можно проанализировать записанные макрорекордером команды.

Индивидуальное задание 9. Самостоятельно изучить работу макрорекордера и создать с его помощью процедуру форматирования расчетного листа. Команду вызова процедуры (Call имя процедуры) добавить в качестве последней команды в процедуру формирования расчетного листа Private Sub CommandButton2_Click (см. рис. 14).

Пример 4. С помощью VBA автоматизируем процесс начисления заработной платы.

Вначале добавим в проект пользовательскую форму (UserForm2) и спроектируем ее (рис. 18). При этом элемент Label2 (расположен ниже поля ФИО) будет предъявлять шифр сотрудника при выборе его фамилии. Элемент Label5 необходим для отображения показаний счетчика, позволяющего редактировать количество иждивенцев. ЭУ Label12, Label13 и Label14 предназначены для вывода суммы, дохода нарастающим итогом и НДФЛ.

Далее создадим процедуры по обработке различных событий, связанных как с самой формой, так и содержащимися в ней ЭУ (рис. 19 и 20).

Аналогично предыдущей задаче, на рабочем листе сформируем кнопку и запишем макрос, предъявляющий UserForm2 на экран (рис. 17). Далее изменим название кнопки.

Индивидуальное задание 10. Самостоятельно изучить процедуры, реализующие решение задачи и выполнить данную задачу.

Рис. 18. Пользовательская форма для начисления зарплаты

Процедура с именем Private Sub UserForm_Initialize() подготавливает форму к предъявлению на экран: очищает поля ввода со списком для выбора полей ФИО и Месяц, Label2 (шифр сотрудника) и Label5 (количество иждивенцев). Кроме того, заполняет Combobox1 фамилиями сотрудников и Combobox2 названиями месяцев.

В табл. 9 приведены программные имена используемых объектов.

Таблица 9. Отдельные объекты VBA

Программное имя

Название, суть

1

Sheets("Название")

Лист рабочей книги с указанным названием

2

Лист5

Лист рабочей книги, указанный по счету с начала книги

3

Cells(i, j)

Ячейка, где i – номер строки, j – номер столбца

4

UserFormN

Пользовательская форма с номером N

Рис. 19. Текст процедур (часть 1)

Рис. 20. Текст процедур (часть 2)