- •Лабораторная работа 6 Табличный процессор Excel-2007 как инструмент для создания простых информационных систем
- •1. Возможности табличного процессора Excel-2007 для создания простых информационных систем
- •2. Макросы
- •4. Практическая часть.
- •4.1. Макросы – первое знакомство
- •4.2. Запишем макрос сами
- •4.3. Используем метод Cells и знание vba о положении курсора
- •4.4. Создание простой информационной системы для заполнения бланка о расходе воды по показаниям водомеров
- •4.4.1. Методические указания по разработке ис
- •4.4.2. Работа с текстовыми полями, входящими в состав элементов управления
2. Макросы
Макрос – специальная подпрограмма, которую пользователь записывает или разрабатывает для расширения функций того программного комплекса, на котором он работает.
Общее представление о подпрограммах дает рис. 4.

Рис. 4. Подпрограммы – общая структура
В Excel (как и во всем MS Office) макросы записываются на языке Visual Basic for Application (VBA).
Excel предоставляет возможность запомнить цепочку действий пользователя, записав их на языке VBA. Это позволяет :
• Быстро и безошибочно воспроизвести записанную цепочку действий, вызвав макрос для исполнения;
• Прочесть текст макроса, чтобы посмотреть, как Excel записал действия пользователя в макрос на языке VBA .
• Модифицировать записанный макрос.
Записывая в макрос короткую цепочку действий, пользователь не только сможет увидеть саму структуру макроса, но и легко опознать обозначения объектов и их параметров на языке VBA. Более того, в Excel и VBA встроена мощная справочная система, обеспечивающая вывод контекстной справки – достаточно установить курсор на интересующем Вас слове и нажать клавишу F1.
4. Практическая часть.
4.1. Макросы – первое знакомство
Для начала работы с макросами достаточно обратиться на ЛЕНТЕ к вкладке ВИД и использовать (самую правую) группу с именем МАКРОСЫ (рис. 5).

Рис. 5. К макросам – через вкладку ВИД.
Для более полноценной работы нам потребуется (чуть позже) вызвать дополнительную вкладку РАЗРАБОТЧИК (см. ниже).
Однако, начнем с простых действий.
4.1.1. Создадим в открытой рабочей книге Excel новый рабочий лист и дадим ему имя ПРОБА (можно переименовать любой свободный лист).
4.1.2. Для определенности установим табличный курсор на ячейку «G20».
4.1.3. Попробуем создать макрос, «попросив» Excel запомнить наши действия. Для этого (см. рис. 6):
На вкладке ВИД активизируем группу МАКРОСЫ;
В выпавшем списке щелкнем по строчке «Запись макроса»;
Рассмотрим появившуюся диалоговую форму.

![]()
Рис. 6. Вход в режим «Запись макроса».
На этой форме есть несколько полей и кнопок, но для нас пока что важно, что Excel предлагает нам записать наши действия в виде макроса с именем «Макрос1», и немедленно приступить к записи наших действий при нажатии кнопки ОК.
Имя «Макрос1» Excel предлагает по умолчанию, и заранее согласен с пользователем, если он даст макросу другое имя (даже на русском языке). Только в тексте имени не должно быть пробелов (их лучше всего заменять символом «_» (нижнего подчеркивания); здесь не допускаются и некоторые запрещенные символы (но даже попытка их использования будет Excel’ом пресечена).
4.1.4.
Согласимся с предложением, и нажмем
кнопку ОК. Форма, указанная на рис. 6,
исчезнет, и теперь Excel
начнет «молча» записывать все наши
действия в макрос с указанным именем,
незримо, но тщательно фиксируя все (даже
ошибочные!) манипуляции, пока запись
макроса не будет остановлена. Саму
остановку записи можно осуществить
через вкладку ВИД – группа МАКРОСЫ –
строка «Остановить запись», или (что
проще) нажав кнопку
, которая появляется в левом нижнем углу
на строке состояния. (Если навести на
нее курсор, всплывет подсказка «Остановить
запись»).
Но вернемся к созданию макроса, и пусть все наши действия, которые мы хотим запомнить, состоят в записи какого-то текста в ячейку, которая сейчас выделена табличным курсором (активную ячейку). Итак:
4.1.5. Наберем с клавиатуры текст: «Ура!», завершив ввод нажатием клавиши Enter.
4.1.6.
Остановим запись макроса, нажав кнопку
.
Что же и в каком виде запомнил Excel? Список всех макросов, имеющихся в открытой книге, можно вызвать по сочетанию клавиш ALT + F8. Давайте, заглянем в этот список, а из него перейдем к просмотру записанного нами макроса (см. рис. 7).

Рис. 7. Вход в режим просмотра и редактирования макроса
4.1.7. Наберем с клавиатуры ALT + F8 и в открывшемся окне выберем действие «Войти».
Заметим, что в списке возможных действий (в левом окне) на первом месте стоит «Выполнить» (нам это еще понадобится), но пока нас интересует, как же устроен наш макрос, и мы выбираем пункт «Войти» или «Изменить», после чего автоматически переходим в окно Visual Basic. В этом окне, как обычно, есть строка заголовка, строка меню, строка (строки) со своими инструментальными линейками, а ниже – два поля: поле VBA-проекта (очень напоминающее по своему виду «Проводник» из ОС Windows) и поле с текстами макросов. Именно последнее поле нас и интересует.
Прежде
всего отметим, что напротив имени макроса
стоит желтая стрелка, и строка «Sub
Макрос1( )» тоже имеет желтый фон. Это не
только привлекает наше внимание к
исследуемому макросу (что существенно,
когда уже записано много макросов), но
и сигнализирует, что мы ВОШЛИ В ОСОБЫЙ
РЕЖИМ РАБОТЫ, который блокирует многие
обычные операции не только в VBA,
но и в Excel-программе.
Поэтому эту блокировку лучше сразу же
снять, нажав кнопку
(Reset)
на инструментальной линейке Standard
в окне Visual
Basic.
Желтая стрелка и желтый фон исчезнут,
но это никак не помешает нашим исследованиям
и дальнейшей работе.
Рассмотрим теперь сам макрос. Он обрамлен строками:
Sub Макрос1 ( )
End Sub
Для англоязычных пользователей легко распознается:
Sub – это сокращение от «The subroutine» (подпрограмма) и End Sub – это «Конец подпрограммы». В первой строке после «Sub» стоит «Макрос1 ( )» – так ведь «Макрос1» – это то имя, которое было дано нашему макросу при его создании, и остается домыслить, что в круглых скобках могли бы стоять параметры, передаваемые макросу – у нас их просто нет, но скобки нужны для соблюдения формы!
Так, с границами разобрались, а что внутри? Три следующие строки начинаются с апострофа и окрашены в зеленый цвет:
'
' Макрос1 Макрос
'
Зеленым цветом в VBA отмечают комментарии (вводимые для лучшего понимания кода программы человеком и игнорируемые VBA при исполнении). Комментарием в VBA считаются все символы от апострофа и до конца текущей строки. Пустые строки комментариев, как нетрудно видеть, зрительно расширяют пространство, структурируя текст макроса и облегчая его восприятие. Заполненные строки комментария обычно несут определенную смысловую нагрузку – в данном случае, об имени и назначении нижележащего текста. (При более глубоком изучении VBA можно увидеть, что в окне с макросами могут появляться описания переменных, дополнительные определения функций и проч.).
Осталось разобрать самую «сердцевину» макроса, его две строки:
ActiveCell.FormulaR1C1 = "Ура!"
Range("G21").Select
Что нам здесь знакомо? Конечно, текст "Ура!" – мы его сами и набирали, а что еще? Для англоязычных пользователей легко распознается:
ActiveCell – «активная ячейка», а затем стоит точка и что-то еще. Здесь следует указать, что для доступа к какому-либо параметру объекта указывают Имя_объекта, а затем – через точку – Имя_параметра, причем в программах на VBA эти имена чаще всего оказываются в английской нотации. Значит, здесь объектом является активная ячейка, а используемым параметром (FormulaR1C1) – формула в формате «R1C1». Не вникая пока в понятие «в формате R1C1», обратимся к строке
Range("G21").Select
Ключевое слово Select легко распознается как команда «Выбрать», но к чему она относится и как вся строка появилась в нашем макросе?
Здесь надо указать, что в VBA есть два способа адресования к ячейкам: по методу Range, и по методу Cells (рис. 8).

Рис. 8. Адресование к ячейке по методу Range и по методу Cells
Метод Range позволяет указать прямо адрес ячейки в привычных обозначениях Excel’а (при более глубоком изучении VBA можно видеть, что этот метод в общем случае позволяет указать диапазон ячеек). В методе Cells аргументами служат два численных выражения (в частном случае - константы, а чаще - переменные). Это делает метод Cells удобным для использования в макросах, в том числе, когда при программировании требуется вычислять адреса ячеек.
Возвращаясь к нашему макросу, мы видим, что он закончился выбором ячейки с адресом ("G21"). Как это произошло? Оказывается, что для того, чтобы закончить ввод нашего победного «Ура!» в ранее выбранной (см. выше п. 4.1.2) ячейке "G20", мы нажали клавишу Enter – и автоматически попали в ячейку с адресом ("G21") – именно это и зафиксировано в последней строке макроса.
Опробуем теперь работу нашего макроса.
4.1.8. Вернуться на рабочий лист «ПРОБА» и установить курсор в другую ячейку, например, «В2».
4.1.9. Наберем с клавиатуры ALT + F8 и в открывшемся окне выберем Макрос1 и действие «Выполнить».
В результате в ячейке «В2» (теперь уже не вручную, а с помощью макроса!) будет занесено «Ура!», а табличный курсор вновь окажется в ячейке с адресом ("G21").
Нетрудно видеть, что Excel вместе с VBA помнят и отслеживают многие нюансы, о которых мы может и забыть или на которые не обращаем внимания. Но теперь, разобравшись в деталях, мы даже можем сообразить, что переход в в ячейку с адресом ("G21") на не очень-то и нужен. Мы можем на свой страх и риск закомментировать последнюю строку макроса и проверить на практике, что при работе макроса «Ура!» будет занесено в активную ячейку, а табличный курсор из нее теперь не будет смещаться!
Вот только уж очень неудобно каждый раз запускать макрос, набирая с клавиатуры ALT + F8, выбирая в открывшемся окне Макрос1 и инициируя действие «Выполнить». Нельзя ли автоматизировать этот процесс? Можно!
4.1.10. Вставим на рабочий лист фигуру «Надпись», и в ее поле напишем «Исполнить!». Щелкнем в стороне по любой ячейке.
4.1.11. Щелкнем по полю фигуры правой клавишей мыши, и в открывшемся контекстном меню выберем пункт «Назначить макрос».
4.1.12. В выпавшем списке укажем макрос «Макрос1», то-есть «привяжем» наш макрос к фигуре. Теперь при подведении курсора мыши к границе фигуры изменение формы курсора укажет нам на возможное изменение режима работы, а щелчок по только что созданной надписи теперь будет инициировать работу макроса. Проверьте это!
Примечание. При сохранении программы с макросами необходимо использовать специальный режим «Сохранить рабочую книгу с макросами», предусмотренный в Excel 2007.
