Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_1_Запись последовательности действий.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Работа с авторекордером

В процессе выполнения лабораторной работы вами должно быть создано 3 рабочих книги:

Запись_макроса_исходная

Запись_макроса_отредактированная

Запись_макроса_шаблон

Каждая последующая книга создается на основе предыдущей и в нее вносятся необходимые изменения.

Запись последовательности действий пользователя с автоматическим преобразованием их в код VBA осуществляется с помощью специальной функции записи макросов Excel. Как это делается, рассмотрим на примере создания таблицы “Поставка товаров” (рис.8).

Поставка товаров

Код товара

Наименование товара

Единица измерения

Цена

Количество

Сумма

101

Товар 1

шт.

10,00р.

5

50,00р.

102

Товар 2

шт.

15,00р.

10

150,00р.

103

Товар 3

шт.

20,00р.

20

400,00р.

104

Товар 4

кг.

20,00р.

105

210,00р.

Итого:

810,00р.

Рис. 8. Таблица “Поставка товаров”

Суть задачи состоит в следующем:

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

Порядок действий следующий.

  • Открыть рабочую книгу; по умолчанию активизируется Лист1.

  • Выполнить команду Сервис Макрос Начать запись (в Excel 2003). В Excel 2007 / 2010 / 2013 на вкладке Разработчик в группе Код нажать Запись макроса.

Рис. 9. Лента MS Excel с открытой вкладкой Разработчик

Можно на вкладке Вид нажать кнопку Макросы и выбрать в появившемся меню опцию Запись макроса.

Рис. 10. Лента MS Excel с открытой вкладкой Вид

В обоих случаях отобразится диалоговое окно Запись макроса. Можно оставить имя макроса по умолчанию, обычно – Макрос1 (рис.11)

Рис. 11. Окно записи имени макроса

или ввести любое другое имя, по возможности, чтобы оно соответствовало выполняемым макросам действиям. В рассматриваемом примере создадим четыре макроса, которые решают следующие задачи:

  • ввод заголовка и “шапки” таблицы,

  • форматирование таблицы,

  • ввод расчётных формул,

  • ввод исходных данных таблицы.

Для программного решения этих задач создадим следующие макросы:

  • ЗаголовокШапка,

  • Формулы,

  • Форматирование,

  • ВводДанных.

Поскольку в именах VBA, в т.ч. макросов, не допускаются пробелы, их рекомендуется заменять символом “_” (подчёркивание, например, Заголовок_шапка) или писать слова слитно, начиная каждое слово с прописной (заглавной) буквы (ЗаголовокШапка). Используем второй вариант – ЗаголовокШапка.

После ввода имени макроса щёлкнуть кнопку OK, чтобы принять параметры по умолчанию.

Excel вставит новый модуль VBA в проект.

Начиная с этого момента, Excel будет преобразовывать действия пользователя в код VBA. В Excel 2003 при записи в окно добавляется плавающая панель инструментов (рис. 12), содержащая две кнопки: левая – “Остановить запись”(синий квадрат) и правая – “Относительная ссылка”:

Рис. 12. Панель останова записи макроса

Если эта панель не появилась, то нужно выполнить команду Вид  Панели инструментов   Настройка и в появившемся окне на вкладке Панели инструментов выставить флажок “Остановить запись”).

В Excel 2007 / 2010 / 2013 на вкладке Разработчик в группе Код нажать Остановить запись.

Аналогичные действия по записи макроса можно выполнить, нажав кнопку Макросы на вкладке Вид и выбрав соответствующую опцию в раскрывающемся списке под этой кнопкой.

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

Для реализации относительной формы записи следует включить кнопку Относительные ссылки в группе Макросы на вкладке Вид или в группе Код на вкладке Разработчик. Метод записи можно изменять в любой момент записи макроса.