Ii. запись макроса «возраст»
По исходным данным рассчитайте возраст пациентов (рисунок 11).
Рисунок 11. Таблица с исходными данными
Для безошибочной записи макроса необходимо скопировать формулу вычисления возраста в буфер обмена: так, выделим курсором начиная со знака «=» до конца формулы
=ГОД(СЕГОДНЯ())-ГОД(B4) - ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())<МЕСЯЦ(B4); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(B4);ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(B4)));1;0)
и скопируем с помощью сочетания клавиш Ctrl+C или вкладка «Главная»/»Буфер обмена»/»Копировать».
Для отображения панели инструментов Visual Basic необходимо открыть вкладку «Разработчик»/»Код»/»Запись макроса»
Введите имя макроса: ВозрастФормула, нажмите «ОК».
С этого момента все действия записываются в макрос.
1. Поставьте курсор в ячейку G4;
2. Введите формулу для расчета возраста, формула рассчитывает разность между текущей датой и датой рождения:
=ГОД(СЕГОДНЯ())-ГОД(B4) - ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())<МЕСЯЦ(B4); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(B4);ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(B4)));1;0)
a) функции СЕГОДНЯ: Возвращает текущую дату в числовом формате. Числовой формат даты – это код даты и времени, с помощью которого в Microsoft Excel производятся вычисления над датами и промежутками времени.
b) функции ГОД: Возвращает год, соответствующий заданной дате. Год определяется как целое число в диапазоне от 1900 до 9999.
3. Выделите ячейку G4, подведите курсов в правый нижний угол, у вас появится черное перекрестие, нажмите левую клавишу мыши и, не отпуская, протяните до ячейки G13. Вы скопировали созданную формулу в диапазон ячеек G5:G13.
4. Остановите запись макроса «Разработчик»/»Код»/»Остановить запись».
5. Таблица с рассчитанным возрастом представлена на рисунке 12.
Рисунок 12. Таблица с результатом выполнения макроса «ВозрастФормула»
Для просмотра результата записи макроса необходимо зайти по вкладке «Разработчик»/»Код»/»Макросы» выбрать макрос «ВозрастФормула» и кнопку «Изменить».
Изучите текст макроса.
Листинг макроса ВозрастФормула
Sub ВозрастФормула () Range("G4").Select ActiveCell.FormulaR1C1 = _ "=YEAR(TODAY())-YEAR(RC[-5]) - IF(OR(MONTH(TODAY())<MONTH(RC[-5]), AND(MONTH(TODAY())=MONTH(RC[-5]),DAY(TODAY())<DAY(RC[-5]))),1,0)" Range("G4").Select Selection.AutoFill Destination:=Range("G4:G13"), Type:=xlFillDefault Range("G4:G13").Select End Sub |
6. Добавляем на лист «Исследования» элементы управления: вкладка «Разработчик» / группа »Элементы управления» / »Вставить» выбираем пиктограмму «Кнопка» из Элементов управления формы. Затем, поставим курсор внизу таблицы и, не отпуская левой клавиши мыши, вычерчиваем кнопку определяя ее размер.
Появляется диалоговое окно «Назначить макрос объекту», выбираем макрос «ВозрастФормула», «ОК».
7. Переименовываем Кнопку заменяя «Кнопка1» на «Возраст». При наведении курсора на кнопку появляется «ручка» и при нажатии макрос выполняется.
- Написание макроса «ВозрастЦвет»
Отметим пациентов для наглядности разной возрастной категории цветами.
Таблица 4. Соответствие между категорией, возрастом и цветом
Категория | Возраст | Присваиваемый цвет |
«Пожилые» | от 60 и выше | оранжевый |
«Взрослые» | от 18 до 60 | синий |
«Дети» | от 0 до 18 | зеленый |
В этом случае самостоятельно записываем макрос «ВозрастЦвет» в редакторе VBA.
Для создания макроса выбираем вкладку «Разработчик»/»Код»/»Запись макросов» и даем имя «ВозрастЦвет», нажимаем «ОК», а затем выполняем следующую последовательность действий:
1) Выделяем диапазон ячеек A4:B13 на листе «Исследования»;
2) Копируем, используя вкладку «Главная»/»Буфер обмена»/»Копировать, или сочетание клавиш Ctrl+C;
3) Переходим на Лист2, ставим курсор в ячейку A4 и вставляем с помощью клавиш Ctrl+V или по вкладке «Главная»/»Буфер обмена»/»Вставить»;
4) Возвращаемся на Лист «Исследования» и выделяем диапазон G4:G13, копируем аналогично пункту 2;
5) Переходим на Лист2, ставим курсор в ячейку C4 и вставляем по вкладке «Главная»/»Буфер обмена»/»Вставить»/»Вставить значения»;
Рисунок 13. Копирование данных в буфер обмена Рисунок 14. Вставка значений
6) Переходим на Лист «Исследования»;
7) Нажимаем на клавишу «ESC» на клавиатуре (верхний левый угол);
8) Останавливаем запись «Остановить запись»;
9) Изменим результат записи макроса, для этого выберем вкладку «Разработчик»/»Код»/»Макросы» и макрос «ВозрастЦвет», нажмем кнопку «Изменить»;
10) В листинг макроса «ВозрастЦвет» добавим описание переменных и выделенные операторы (рисунок 15):
11) Сохраняем макрос (сочетание клавиш Ctrl+S или «Главная»/»Save») и закрываем редактор VBA (правый верхний угол нажмите «x»).
12) Добавляем на лист «Исследования» элементы управления: вкладка «Разработчик» / группа »Элементы управления» / »Вставить» выбираем пиктограмму «Кнопка» из Элементов управления формы. Затем, поставим курсор внизу таблицы и, не отпуская левой клавиши мыши, вычерчиваем кнопку определяя ее размер.
13) Появляется диалоговое окно «Назначить макрос объекту», выбираем макрос «ВозрастЦвет», «ОК».
14) Переименовываем Кнопку: «Кнопка1» заменяем на «Возраст».
15) Щелкаем мышью в пустом месте рабочего и поля, затем подводим курсором к созданной кнопке, появляется «ручка», нажимаем на кнопку.
16) Пациенты разной возрастной категории отмечены в исходной таблице разными цветами для наглядности.
Таблица 5. Описание добавлений в макрос «ВозрастЦвет» на языке VBA
Описание новых переменных Начало цикла с 4 по 13 строку повторяем: проверяем возраст (лист 2), затем переходим на лист «Исследования», устанавливаем цвет заливки и ставим надпись в столбце «Возрастная категория» |
Цвет разных возрастных категорий можно поменять в соответствии с таблицей 3.