Ввод заголовка и “шапки” таблицы
1. Ввести заголовок и шапку таблицы (рис. 8), отображение которых на экране приведено на рис. 13
Рис. 13. Заголовок и шапка таблицы
2. Щёлкнуть по кнопке Остановить запись (Excel 207 / 2010 /2013) или выполнить команду Сервис ® Макрос ® Остановить запись (Excel 2003).
Теперь можно проверить, что получится при выполнении макроса. Для этого нужно удалить заголовок и шапку с листа Excel и запустить макрос ЗаголовокШапка на выполнение, для чего нужно выполнить команду
для MS Excel 2003 Сервис ® Макрос ® Макросы
для MS Excel 2007 / 2010 /2013 нажать кнопку Макросы на вкладке Разработчик (рис. 14) или на вкладке Вид (рис. 15)
Рис. 14. Лента MS Excel 2010 с открытой вкладкой Разработчик
Рис. 15. Лента MS Excel 2010 с открытой вкладкой Вид
В появившемся окне Макрос (рис16) дважды щёлкнуть по имени макроса ЗаголовокШапка в окне Макрос или нажать кнопку Выполнить. На активном листе появится таблица, приведённая на рис. 13.
Переход к просмотру или изменению макроса можно выполнить несколькими способами:
1. В окне Макрос (рис. 16) щёлкнуть по имени макроса (ЗаголовокШапка), а затем щёлкнуть по кнопке Изменить.
Рис.16. Окно макросов
2. Выполнить команду Сервис ® Макрос ® Редактор Visual Basic и выбрать нужный макрос (Excel 2003) или нажать кнопку Visual Basic, расположенную на вкладке Разработчик слева (Excel 2007 / 2010 / 2013).
3. Щёлкнуть по кнопке Редактор Visual Basic.
Рис.17 Фрагмент пиктографического меню в Excel2003
В Excel2007 / 2010 / 2013:
Рис.18 Лента MS Excel2010 с открытой вкладкой Разработчик
Используем первый способ. Ниже приведён текст макроса ЗаголовокШапка, сгенерированный Excel при выполнении действий пользователя по вводу заголовка и шапки таблицы.
Option Explicit
Sub ЗаголовокШапка()
'
' ЗаголовокШапка Макрос
' Макрос записан 09.10.2015 (Neklyudova)
ActiveCell.FormulaR1C1 = "Поставка товаров"
Range("A2").Select
ActiveCell.FormulaR1C1 = "Код товара"
Range("B2").Select
ActiveCell.FormulaR1C1 = "Наименование товара"
Range("C2").Select
ActiveCell.FormulaR1C1 = "Единица измерения"
Range("D2").Select
ActiveCell.FormulaR1C1 = "Цена"
Range("E2").Select
ActiveCell.FormulaR1C1 = "Количество"
Range("F2").Select
ActiveCell.FormulaR1C1 = "Сумма"
Range("F3").Select
End Sub
При записи макроса VBA кодирует все действия пользователя. Для ввода данных в каждую ячейку текста VBA сгенерировал две инструкции, первая из которых соответствует выделению ячейки – используется свойство ячейки Range и метод Select, а вторая использует свойство FormulaR1C1 ячейки, которое возвращает или устанавливает формулу для объекта, используя нотацию (адресацию) стиля R1C1 на языке макро. Кроме того, редактор VBA вставил инструкцию Option Explicit, которая требует явное объявление переменных.
Для удобства проверки правильности функционирования макросов переименуем листы Excel следующим образом:
Лист1 Шапка
Лист2 Формулы
Лист3 Форматирование
Лист4 ВводДанных
Выполнив макрос ЗаголовокШапка, убедимся, что он работает корректно только тогда, когда активной ячейкой на момент выполнения макроса является ячейка A1. Именно эта ячейка была активной в момент начала записи макроса. Если мы выполним макрос не сделав ячейку A1 активной, то "Поставка товаров" окажется в активной ячейке. Небольшое изменение в коде макроса ЗаголовокШапка позволит начинать выполнение макроса с ячейки A1 вне зависимости от того какая ячейка является активной на момент выполнения макроса. Вставим в начало макроса инструкцию Range("A1").Select, которая сделает ячейку A1 активной.
Sub ЗаголовокШапка()
'
' ЗаголовокШапка Макрос
' Макрос записан 09.10.2015 (Neklyudova)
Range("A1").Select
ActiveCell.FormulaR1C1 = "Поставка товаров"
Range("A2").Select
ActiveCell.FormulaR1C1 = "Код товара"
Range("B2").Select
ActiveCell.FormulaR1C1 = "Наименование товара"
Range("C2").Select
ActiveCell.FormulaR1C1 = "Единица измерения"
Range("D2").Select
ActiveCell.FormulaR1C1 = "Цена"
Range("E2").Select
ActiveCell.FormulaR1C1 = "Количество"
Range("F2").Select
ActiveCell.FormulaR1C1 = "Сумма"
Range("F3").Select
End Sub
Ввод расчётных формул
Для большей наглядности перед записью макроса Формулы целесообразно выполнить уже созданный макрос ЗаголовокШапка и только тогда выполнить следующие действия:
- начать запись макроса и ввести в диалоговом окне рис. 9 имя макроса Формулы;
- Ввести в ячейку F3 формулу =D3*E3 и протянуть курсор автозаполнения с ячейки F3по ячейку F10.
- Ввести в ячейку E11 текст “Итого:”.
- Ввести в ячейку F11 формулу =СУММ(F3:F10).
Ниже приведён текст макроса Формулы, сгенерированного Excel, осуществляющего расчёты по приведённым выше формулам.
Sub Формулы()
' Формулы Макрос
' Макрос записан 09.10.2015 (Neklyudova)
'
ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"
Range("F3").Select
Selection.AutoFill Destination:=Range("F3:F10"), Type:=xlFillDefault
Range("F3:F10").Select
Range("E11").Select
ActiveCell.FormulaR1C1 = "Итого:"
Range("F11").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-8]C:R[-1]C)"
Range("F12").Select
Range("F12").Select
End Sub