Разделы:
Информатика
Практическая работа 1. «Годовая температура»
Порядок работы:
- Откройте Excel.
- Переименуйте «Лист1» в лист «Температура».
- Составьте таблицу «Годовая температура»
Месяц | Средняя температура |
Январь | -5 |
Февраль | -6 |
Март | 0 |
Апрель | 2 |
Май | 10 |
Июнь | 15 |
Июль | 18 |
Август | 20 |
Сентябрь | 18 |
Октябрь | 6 |
Ноябрь | 3 |
Декабрь | -9 |
- В ячейку Е3 поместите значение среднегодовой температуры, рассчитав ее по формуле СРЗНАЧ(В3:D3)
- Запишите Ваши действия в макрос, назвав его «СрГодТемп».
- Привяжите макрос к графическому объекту (например, кнопка):
Отформатируйте ее и назначьте ей макрос «СрГодТемп».
- Справа от показателя температуры нарисуйте графический объект (кнопку) и назначьте ему макрос, который будет очищать содержимое ячейки Е3.
- Проверьте работу кнопок «Средне-годовая t » и «Очистить».
- Самостоятельно выполните создание кнопок и макросов для подсчета и очистки:
- Максимальной годовой температуры;
- Минимальной годовой температуры;
- Средняя температура по временам года (зимой, весной, летом, осенью)
- Создать кнопку «Очистить всё» для очистки всех расчетов.
Ваша работа должна выглядеть следующим образом:
Практическая работа 2. «Протяженность границ РФ» – Приложение 1.
Практическая работа 3. «Тест на визуальный Интеллект» – Приложение 2.
18.03.2012
Практическая работа в MS Excel.
Создание «мультфильма» с помощью макроса.
Цель работы:
-
создание макроса в среде MS Excel;
-
способы запуска макросов;
-
редактирование текста макросов, записанных на языке VBA.
Ход выполнения работы:
-
Подготовим сцену и расставим на ней героев. Пусть у нас это будет сценка из известной сказки «Колобок». Допустим, фоновая картинка выглядит примерно так:
(используем элементы встроенной векторной графики – панель Рисования). Домик можно получить из нескольких параллелепипедов (для их рисования используйте инструмент Прямоугольник и Объём). Трава – это просто закрашенные ячейки Excel. Посадим на крылечко дома Колобка («улыбающееся лицо»).
-
Теперь можно пустить нашего героя в путешествие. Вот здесь и понадобится макрос. При создании макроса важно продумать все действия, которые он должен будет выполнять. Наш макрос должен показывать последовательные фазы перемещения Колобка. Смещать его по экрану просто, но при выполнении макроса (показе фильма) он будет перемещаться очень быстро. Чтобы сделать движение плавным, необходимо останавливать Колобка в какие-то моменты (как бы щелкать затвором фотокамеры, как это делается при съёмках рисованного мультфильма). В качестве такого «щелчка» выберем щелчок мышью по одной и той же ячейке листа. Пусть это будет ячейка Е1. Движение Колобка должно происходить по траектории небольшого прыжка и разбито на несколько маленьких продвижений.
Фазы перемещений будут приблизительно выглядеть так.
-
Итак, последовательность действий при записи макроса должна быть такой:
-
Выделить Колобка.
-
Переместить его в следующую позицию.
-
«Щелкнуть затвором» (на ячейке Е1).
-
Если не дошли до пенька, то перейти к пункту 1, в противном случае запрыгнуть на пенёк и остановить запись макроса.
-
-
Теперь вы можете записать макрос Сервис – Макрос — Начать запись, дать макросу имя или запомнить предложенное.
-
Когда всё будет готово, лучше убрать сетку листа ( Сервис – Параметры выбрать вкладку Вид и на ней убрать «галочку» возле надписи Сетка)
-
Для запуска своего макроса можно вызвать диалоговое окно Макрос (Сервис – Макрос – Макросы), выделить свой макрос и дать команду Выполнить. Хотя сделать это можно разными способами, например, встроив команду в меню, создав кнопку на панели инструментов, или задав выполнение макроса комбинации клавиш, или назначив вызов макроса какому-нибудь объекту (в нашем случае можно назначить макрос самому Колобку). Для этого перетащите его обратно на крылечко дома, затем щелкните по нему правой кнопкой мыши, в появившемся контекстном меню выберите пункт Назначить макрос…, и отметив созданный макрос в списке всех доступных макросов, нажмите ОК. для запуска макроса щелкните где-нибудь вне Колобка, а затем наведите на него указатель мыши. Появится рука с пальцем – признак того, что Колобок стал управляющей кнопкой. Жмите и любуйтесь!
-
Несмотря на «щелчок» затвором, перемещения героя вашего фильма всё же будут быстрыми. Можно несколько изменить текст макроса, используя оператор цикла. Чтобы сделать движение Колобка плавными, необходимо включить в текст макроса так называемые «пустые циклы», как – бы замедляя тем самым его движение. На языке VBA такой цикл имеет вид:
FOR I=1 TO 10000000
NEXT I
Для внесения таких изменений в текст макроса следует вызвать диалоговое окно Макрос (Сервис – Макрос – Макросы), выделить требуемый макрос и щелкнуть на кнопке Изменить. В появившемся окне, в котором представлен текст макроса, после каждой строки Range (“E1”). Select (эта команда соответствует щелчку мышью на ячейке Е1 при записи макроса) необходимо вставить «пустой» цикл.
8. Показать работу учителю.
-
Можно создать второй макрос, при выполнении которого Колобок спрыгивает с пенька и возвращается назад, или можно отправиться в путешествие дальше (всё это зависит от вашей фантазии).
-
Аналогично можно создавать мультфильмы в программах MS Word и MS PowerPoint.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ
ТАТАРСТАН
ГАОУ СПО «МЕНЗЕЛИНСКИЙ ПЕДАГОГИЧЕСКИЙ КОЛЛЕДЖ
ИМЕНИ МУСЫ ДЖАЛИЛЯ»
Практические занятия
«Создание макросов в Microsoft Excel»
Составитель: преподаватель
информатики
Мингазетдинова Л.Р.
Мензелинск, 2013
Содержание
Введение………………………………………………………..…..4
Создание
макросов…………………………………………………4
Редактирование,
удаление, переименование и назначение макросов…………………………………………………………………9
Примеры
макросов………………………………………………23
Заключение……………………………………………………….28
Список
использованной литературы……………………………30
Введение
Если при работе
с Microsoft Excel для Windows у вас возникла необходимость несколько раз
выполнить одну и ту же последовательность действий, то вы можете записать эту
последовательность под определенным именем. Записанная под определенным именем
последовательность действий называется макросом. Записанный макрос можно
вызывать для выполнения из основного меню при помощи кнопки на панели
инструментов или на рабочей области, а также комбинации клавиш. Макрос может
быть назначен так же графическому объекту.
Макрос записывается на языке Visual Basic
for Applications. Текст макроса можно вызывать для редактирования.
В следующей
главе мы рассмотрим вопросы:
Создание и редактирование макросов
Назначение макроса
клавише быстрого вызова и пункту основного меню
Назначение макроса графическому объекту и
кнопке пользователя
Запись новых действий в
существующий макрос
Создание кнопки для вызова макроса
Создание макросов
К часто
повторяющимся действиям можно отнести выбор нужного формата. Процедуру создания
макросов мы рассмотрим на примере макроса “Число”, который будет устанавливать
для выделенной области числовой формат. Требуемый числовой формат создадим
заранее в категории форматов Все форматы.
Для записи макроса выполните следующие
действия:
Выполните
команду Сервис | Запись макроса | Начать запись. Появится окно диалога
“Запись макроса”.
Введите в поле
ввода Имя макроса название создаваемого макроса — Число. Помимо стандартной
информации (когда и кем был записан макрос) вы можете ввести в поле ввода Описание
краткое описание назначения макроса. После этого нажмите кнопку OK. Начиная с
этого момента осуществляется запись макроса. На экране появляется кнопка Остановить
макрос. Если вы нажмете на ней кнопку мыши, то запись макроса будет
закончена. Другим признаком режима записи макроса является появление слова
“Запись” в строке состояния.
Теперь вам
нужно выполнить последовательность действий, которая и будет записана в макрос.
В нашем случае последовательность действий следующая: выделите ячейки, которые
вы собираетесь форматировать, и нажмите Ctrl+1; в появившемся окне диалога
“Формат ячеек” выберите вкладку “Число”, а на ней категорию форматов Все
форматы. Из появившегося списка форматных кодов выберите требуемый код,
после чего нажмите кнопку OK.
В заключение
вам остается завершить запись макроса. Кроме нажатия на кнопку Остановить
макрос вы можете воспользоваться альтернативным способом: в списке опций
пункта основного меню Сервис выберите Запись макроса, а затем — Остановить
запись.
Если кнопка Остановить
макрос отсутствует с экрана, то ее легко можно восстановить. Для этого
нажмите правую кнопку мыши на любой панели инструментов и в появившемся списке
выберите пункт Настройка. Появится список категорий кнопок. Выберите
среди них категорию Макрос. Появится набор кнопок, который содержит
кнопку Остановить макрос. Нажмите на ней кнопку мыши и, удерживая ее
нажатой, переместите кнопку на нужную вам панель или просто на экран. Для
выхода из режима настройки панелей нажмите кнопку Закрыть.
После окончания
записи макроса он появляется в списке макросов под именем “Число”. Для вызова
макроса выполните команду Сервис | Макрос. Появится окно диалога со
списком макросов. Найдите требуемый макрос и нажмите кнопку Выполнить.
Результатом работы макроса “Число” будет ввод форматного кода в выделенные
ячейки таблицы.
В Excel
предусмотрена возможность вызывать макрос при помощи клавиши быстрого вызова
или назначить макросу пункт меню в списке опций меню Сервис. Обе эти
возможности можно реализовать одновременно. Для этого при выполнении 3 шага
процедуры создания макроса, после ввода имени, нужно нажать кнопку Параметры.
Появится окно диалога.
Назначить макросу
пункт меню или клавишу быстрого вызова можно и после того как макрос создан.
Для этого выполните команду Сервис | Макрос. Появится окно диалога со
списком макросов. Выделите нужный и нажмите кнопку Параметры. Появится
окно диалога, в котором вы можете сделать все необходимые назначения.
При записи
макроса можно включать режим с относительными ссылками. Этот режим позволяет
использовать записанный макрос для любой области рабочей книги. Режим с
относительными ссылками нужно включать при записи макросов, которые используют
ссылки на адреса рабочей книги.
Разберем два
примера макросов. Один записан в обычном режиме, а другой— с относительными
ссылками, после чего сравним их работу.
Пример 1. Вывод на экран названий месяцев
При составлении
различных отчетов и сводок в качестве названий строк часто используются
названия месяцев. Создадим макрос, который будет выводить на экран столбец с
названиями месяцев в ячейках A1:A12. Для этого выполните следующие действия:
· Установите
курсор в какую-нибудь ячейку книги, за исключением A1.
· Выполните
команду Сервис | Запись макроса | Начать запись. Появляется окно диалога
“Запись макроса”.
· Введите в
поле ввода Имя макроса название создаваемого макроса Месяц_абс. В поле ввода
Описание введите текст: Вводит названия месяцев. Нажмите кнопку Параметры.
Появится окно диалога “Запись макроса”.
· Введите
клавишу быстрого вызова макроса. Для этого перейдите в поле ввода Ctrl,
переключитесь на латинский регистр, удалите находящуюся там букву и введите
букву m. После этого нажмите кнопку OK. Начиная с этого момента, осуществляется
запись макроса.
· Выполните
последовательность действий, которую будет выполнять макрос: установите курсор
в ячейку A1; введите слово январь; поместите указатель мыши в правый нижний
угол ячейки A1, при этом указатель мыши изменит вид на черный крестик; нажмите
кнопку мыши и, удерживая ее нажатой, продолжите выделение до ячейки A12.
· Нажмите на
кнопку Остановить макрос.
Если вы не
выполните условие 1 шага, то есть курсор будет находиться в ячейке A1, то
макрос будет правильно работать только в том случае, когда вы перед нажатием
клавиш Ctrl+m поместите курсор в ячейку A1.
Макрос записан и теперь нажатие клавиш Ctrl+m
вызовет появление в ячейках A1:A12 названий месяцев. При записи макроса мы не
включали режим записи с относительными ссылками, поэтому названия месяцев будут
появляться только в ячейках A1:A12. Для устранения этого неудобства
предназначен режим записи
Пример 2. Создание макроса с относительными ссылками
В этом примере
вам предстоит создать макрос с относительными ссылками для размещения заголовка
таблицы продаж компьютеров в произвольном месте рабочей книги.
Перед созданием
макроса включите режим записи с относительными ссылками. Для этого выполните
следующие действия:
· Выполните
команду Сервис | Запись макроса | С относительными ссылками.
· Введите в
поле ввода Имя макроса название создаваемого макроса — Заголовок. В поле ввода Описание
введите текст: Вводит названия компьютеров.
· Нажмите
кнопку Параметры. Появится окно диалога “Запись макроса”.
· Введите
наименование добавляемого пункта меню: Типы ЭВМ. Нажмите кнопку OK.
· Выполните
последовательность действий, которую будет выполнять макрос: введите заголовок
таблицы: Тип компьютера; нажмите клавишу Enter; введите тип 1 компьютера
CP_35_SR и нажмите клавишу Tab. Аналогично введите следующие типы компьютеров
CP_40_SR, CP_55_LS, CP_55_SX. Выделите четыре ячейки с введенными типами
компьютеров, выберите команду Формат | Столбец, а затем команду Подгон ширины
(поскольку названия типов компьютеров не умещаются полностью в ячейке).
· Нажмите на
кнопку Остановить макрос.
После окончания
записи макроса в меню команды Сервис появится пункт с названием Типы
ЭВМ, которое мы ввели на 4 шаге.
Для выполнения
макроса “Заголовок” нужно нажать кнопку мыши на пункте с названием Типы ЭВМ. В
том месте таблицы, где расположен курсор, появится заголовок следующего вида:
Тип компьютера CP_35_SR CP_40_SR CP_55_LS CP_55_SX
Этот макрос
отличается от макроса, созданного в примере №1 тем, что заголовок таблицы можно
поместить в любом месте текущей рабочей книги.
Редактирование макросов
В этом разделе
мы рассмотрим вопросы изменения текста макроса, его удаления и переименования.
Здесь же будет рассказано о том, как записать новую последовательность действий
в уже существующий макрос.
Одним из
способов внесения изменений в записанный макрос является запись нового макроса.
Однако это не всегда удобно, а часто бывает и утомительно из-за большого объема
работы. В следующем примере мы изменим формат вводимых чисел в макросе “Число”.
Пример 3. Редактирование текста макроса
В этом примере
вам предстоит изменить текст макроса.
Для входа в
режим редактирования макроса выполните команду Сервис | Макрос. Появляется
окно диалога “Макрос”, в котором после выбора нужного для редактирования
макроса становятся доступными кнопки, в том числе кнопка Редактирование.
Редактировать
можно и непосредственно в модуле с текстом макроса. Текст макроса “Число”
расположен в модуле 1, расположенном после 16 листа рабочей книги. Используя
кнопки прокрутки листов найдите модуль 1 и нажмите кнопку мыши на его ярлычке.
Перед вами появится текст макроса “Число”, записанный на языке Visual Basic:
Число Макрос Форматный код “# #??” Быстрый вызов:
Ctrl+x
Sub Число()
Selection.NumberFormat = “# #??”
End Sub
Первые две строки составляют
комментарий, последующие — текст макроса. Редактирование сводится к тому, что
вместо форматного кода “# #??” вводится форматный код “# #??,00”.
Действуя
аналогичным образом, вы можете внести более серьезные изменения в текст
макроса. Фактически вы имеете возможность изменять текст программы Visual
Basic, реализующий макрос. Это открывает перед вами большие возможности в
написании собственных программ.
Удаление макросов
Если макрос
назначен клавише быстрого доступа, графическому объекту или кнопке, то процесс
удаления является стандартным. Вы выбираете опцию Макрос пункта Сервис
основного меню. Появляется окно диалога “Макрос”, содержащее список макросов
текущей рабочей книги. После выбора макроса, который вы предполагаете удалить,
станут доступными кнопки окна диалога “Макрос”, в том числе кнопка Удалить.
Для удаления выбранного макроса вам достаточно нажать эту кнопку.
Макрос можно
удалить и другим способом. Если макрос записан в отдельном модуле, то нужно
удалить модуль. Для этого нужно сделать его активным, а затем нажать правую
кнопку мыши на его ярлычке. Появится окно диалога, в котором нужно выбрать
команду Удалить. Если модуль содержит и другие макросы, то нужно
выделить весь текст удаляемого макроса и нажать клавишу Del на клавиатуре.
Объекты, которым
был назначен макрос, удаляются из режимов редактирования этих объектов.
Определенную
трудность представляет процесс удаления строк с названиями макросов из пункта Сервис
основного меню. Для их удаления вы можете использовать окно диалога
“Редактор меню”, которое открывается нажатием кнопки Редактор меню,
расположенной на панели инструментов “Visual Basic”. Вы можете выбрать
требующийся пункт меню из списка Меню. При этом в следующем списке Элементы
меню появляются опции этого пункта меню. Вы можете выбрать и удалить нужную
строку нажатием кнопки Удалить.
Кнопка Сброс
окна диалога восстанавливает стандартное состояние всех пунктов основного меню
Excel.
После нажатия
кнопки Сброс восстановить ранее сделанные в пункты меню назначения с
помощью клавиш Ctrl+Z невозможно. Можно только закрыть файл без сохранения всех
сделанных изменений, а затем открыть его снова.
Окно диалога
“Редактор меню” можно вызвать и без использования кнопки Редактор меню. Для
этого нужно выполнить следующие действия:
· Сделайте активным
какой-нибудь модуль. Если в рабочей книге нет ни одного макроса, то создайте
какой-нибудь макрос (например, не выполняющий никаких действий).
· Выберите
пункт Сервис текущего меню. Появится ниспадающее меню, в котором
присутствуют дополнительные опции, одной из которых является Редактор меню
· Установите
курсор на команду Редактор меню и нажмите клавишу Enter. Появится
требуемое окно диалога.
Не создавайте
макрос, восстанавливающий пункты меню. Делайте эту работу вручную и вы избежите
неприятностей, связанных с потерей информации.
Переименование макроса
Специальной
команды для переименования макроса нет, а часто возникает потребность исправить
имя или присвоить макросу совершенно новое наименование. Для этого нужно войти
в режим редактирования макроса и в тексте программы исправить заголовок.
Пример 4. Изменение имени макроса
Изменим имя
макроса “Месяцы” на “Месяцы_с_абсолютными_адресами”. Для этого войдите в режим
редактирования макроса “Месяцы”. Ниже расположен текст программы.
Месяцы Макрос Быстрый вызов: Ctrl+o
Sub Месяцы()
ActiveCell.FormulaR1C1 = “январь”
Selection.AutoFill
Destination:=ActiveCell.Range(“A1:A12”); _
Type:=xlFillDefault
ActiveCell.Range(“A1:A12”).Select
End Sub
строка является комментарием. Заменим “Месяцы”
на “Месяцы_с_абсолютными_адресами”. Соответствующим образом изменим
комментарий. В результате получим новый текст программы макроса:
‘Месяцы_с_абсолютными_адресами
Макрос Быстрый вызов: Ctrl+o
Sub
Месяцы_с_абсолютными_адресами()
ActiveCell.FormulaR1C1
= “январь”
Selection.AutoFill
Destination:=ActiveCell.Range(“A1:A12”); _
Type:=xlFillDefault
ActiveCell.Range(“A1:A12”).Select
End Sub
Новое имя автоматически заменит старое в
списках макросов. По клавише быстрого вызова будет вызываться макрос с новым
именем. Но не все замены происходят автоматически. Если ваш макросу были
назначены графические объекты или кнопки, то вам нужно будет самим сделать для
них переназначения.
Запись в существующий макрос новых действий
Если вы хотите добавить в макрос новые
действия, то вам нужно включить соответствующий режим записи макроса. Для этого
выполните следующие действия:
Сделайте
активным модуль, в котором находится макрос.
В тексте
программы установите курсор в место ввода новых действий.
Выполните
команду Сервис | Запись макроса | Отметить позицию. Теперь ваши действия при
записи макроса будут записываться в программу с того места, где вы установили
курсор.
Перейдите в
лист рабочей книги, где вы будете записывать новые действия.
Выполните
команду Сервис | Запись макроса | Записать с отметки. Начиная с этого момента
все ваши действия будут записываться в макрос.
Выполните
все дополнительные действия макроса.
Нажмите на
кнопку Остановить запись.
Рассмотрим
конкретный пример добавления новых записей.
Полезно сначала
выполнить макрос, в который вы собираетесь добавлять новые записи. Тогда вам
легче будет ориентироваться, в каком месте таблицы установить указатель перед
тем как начать выполнять действия.
Пример 5. Внесение изменений в существующий макрос
Внесем
изменения в макрос “Заголовок”, который был записан в примере 6.2. Изменения
будут касаться формата заголовка. Расположим заголовок “Типы компьютеров” в
центре строки над названиями типов и введем другой шрифт для заголовка.
Приведем текст
программы, реализующий макрос “Заголовок” и укажем место расположения курсора
строкой с комментарием “‘место установки курсора”.
Заголовок
Макрос назначен пункт меню Сервис “Тип ЭВМ”
Sub
Заголовок()
ActiveCell.FormulaR1C1 = “Тип компьютера”
ActiveCell.Offset(1; 0).Range(“A1”).Select
ActiveCell.FormulaR1C1 = “CP_35_SR”
ActiveCell.Offset(0;
1).Range(“A1”).Select
ActiveCell.FormulaR1C1 = “CP_40_SR”
ActiveCell.Offset(0;
1).Range(“A1”).Select
ActiveCell.FormulaR1C1 = “CP_55_LS”
ActiveCell.Offset(0;
1).Range(“A1”).Select
ActiveCell.FormulaR1C1
= “CP_55_SX”
ActiveCell.Offset(0;
-3).Range(“A1:D1”).Select
ActiveCell.Activate
Selection.Columns.AutoFi
‘место установки курсора
End Sub
Для внесения новых записей в макрос
“Заголовок” выполните следующие действия:
· Удалите
комментарий в предпоследней строке программы и поместите там указатель.
· Для того
чтобы определить позицию, с которой будут записываться новые действия,
выполните первые 5 шагов алгоритма внесения изменений в макрос.
· Перед тем
как выполнить 6 шаг алгоритма внесения изменений в макрос, запустите макрос
“Заголовок”. Это позволит вам определить положение курсора на рабочем листе,
где будут вноситься новые действия.
· Выполните 6
шаг алгоритма внесения изменений в макрос. Все последующие действия будут
записаны.
· Выделите
четыре ячейки, включающие заголовок “Тип компьютера”.
· Выберите
вкладку “Выравнивание”, в которой установите флажок Центрировать по
выделению. Таким образом мы поместим заголовок в середину строки.
· Выберите
вкладку “Шрифт”, в которой установите стиль Italic и размер шрифта 16. Нажмите
кнопку OK, чтобы выйти из режима форматирования ячейки.
· Нажмите
кнопку Остановить макрос.
После
завершения записи новых действий в макрос “Заголовок” мы получили новый текст
программы:
Заголовок
Макрос назначен пункт меню Сервис “Тип ЭВМ”
Sub
Заголовок()
ActiveCell.FormulaR1C1 = “Тип компьютера”
ActiveCell.Offset(1;
0).Range(“A1”).Select
ActiveCell.FormulaR1C1 = “CP_35_SR”
ActiveCell.Offset(0;
1).Range(“A1”).Select
ActiveCell.FormulaR1C1 = “CP_40_SR”
ActiveCell.Offset(0;
1).Range(“A1”).Select
ActiveCell.FormulaR1C1
= “CP_55_LS”
ActiveCell.Offset(0;
1).Range(“A1”).Select
ActiveCell.FormulaR1C1 = “CP_55_SX”
ActiveCell.Offset(0;
-3).Range(“A1:D1”).Select
ActiveCell.Activate
Selection.Columns.AutoFit
ActiveCell.Offset(-1; 0).Range(“A1:D1”).Select
With Selection
.HorizontalAlignment = xlCEnterAcrossSelection
.VerticalAlignment = xlBottom
.WrapText =
False
.Orientation =
xlHorizontal
End With
With Selection.Font
.Name =
“TimesET”
.FontStyle =
“Italic”
.Size = 16
.Strikethrough =
False
.Superscript =
False
.Subscript =
False
.OutlineFont =
False
.Shadow = False
.Underline =
xlNone
.ColorIndex =
xlAutomatic
End With
End Sub
Перед последним
оператором программы осталась пустая строка. Вы можете удалить ее.
Теперь
результат работы макроса “Заголовок” имеет следующий вид:
Тип компьютера
CP_35_SR CP_40_SR CP_55_LS CP_55_SX
Назначение макроса
Назначение макроса графическому объекту
Макрос может
вызываться не только нажатием клавиш быстрого вызова, но и нажатием кнопки мыши
на графическом объекте. В этом разделе рассказывается о том, как организовать
такой вызов макроса.
Для назначения
макроса графическому объекту необходимо наличие такого объекта на экране. Представлены
три графических объекта, которым назначены макросы.
Для создания
графических объектов была вызвана панель инструментов “Рисование”. Для этого
необходимо выполнить команду Вид | Панели инструментов, а затем в окне диалога
“Панели инструментов” установить флажок на строке Рисование.
Для вызова
списка панелей вы можете нажать правую кнопку мыши на любой панели
инструментов.
Чтобы
нарисовать закрашенный овал или прямоугольник, нажмите кнопку мыши на
соответствующем рисунке на панели “Рисование”. Вам будет предложено выбрать
место для объекта. Поместите указатель мыши в нужное место таблицы и, удерживая
нажатой кнопку мыши, нарисуйте объект — прямоугольник или овал.
Для выбора
заливки объекта нажмите правую кнопку мыши на активном объекте. Появится меню,
в котором выберите пункт Формат объекта. Появится окно диалога
“Форматирование объекта”, в котором выбирается цвет и вид заливки.
Надписи на
объектах создаются следующим образом:
Нажмите
кнопку Текстовое поле на панели инструментов “Рисование”.
Удерживая
нажатой кнопку мыши, выделите место для текста.
Введите
требуемый текст и нажмите кнопку мыши вне текстового окна. Это необходимо
сделать для того, чтобы войти в режим выравнивания текста внутри текстового
окна.
Нажмите
правую кнопку мыши на текстовом окне. Появится меню, в котором выберите пункт
Формат объекта. В результате появится окно диалога “Форматирование объекта”, в
котором перейдите на вкладку “Выравнивание”.
Установите
переключатели вертикального и горизонтального выравнивания в положение по
центру и выберите вкладку “Шрифт”.
Установите
стиль и размер шрифта и нажмите клавишу OK.
Нажатие
Enter при вводе текста не завершает ввод, а лишь переводит на следующую строку.
Вы получили
надпись на объекте. Обратите внимание, что надпись “Заголовок” сделана под
графическим объектом “прямоугольник”. После того как было найдено удачное
расположение надписи на объекте, была нажата кнопка На задний план,
расположенная на панели инструментов “Рисование” и текст оказался под объектом.
Мы построили
графические объекты. Теперь назначим этим графическим объектам макросы. Для
этого выполните следующие действия:
· Нажмите
кнопку мыши на графическом объекте. Объект становится активным.
· Выполните
команду Сервис | Назначить макрос. Появится окно диалога со списком макросов.
· Выберите
требуемый макрос и нажмите на нем кнопку мыши. Имя макроса появится в верхней
строке окна диалога.
· Нажмите
кнопку OK. Вы выйдете из режима назначения макроса. Графический объект остается
активным. Нажмите кнопку мыши в любом месте вне объекта.
Объект
становится активным, когда на его границе появляются черные квадратики. Если
графический объект не назначен макросу, то чтобы сделать его активным
достаточно нажать на нем кнопку мыши. Если назначение макроса графическому
объекту уже сделано, то чтобы сделать его активным нужно нажать на нем
одновременно кнопку мыши и клавишу Ctrl.
Назначить макрос
графическому объекту можно и другим способом. Нажмите правую кнопку мыши на
объекте. Из появившегося меню выберите команду Назначить макрос и из
списка макросов выберите требуемый.
Макрос назначен
графическому объекту. Если теперь поместить указатель мыши на этот объект, то
белый крестик перейдет в изображение руки с отогнутым указательным пальцем.
Нажатие левой кнопки мыши приводит к выполнению макроса, который назначен этому
объекту.
Пример 6.
Назначение макроса графическому объекту
Назначим макрос
“Число” графическому объекту “стрелка”. Для этого выполните следующие действия:
· Нажмите
кнопку с изображением стрелки на панели инструментов “Рисование”.
· Установите
курсор в нужное место таблицы и, удерживая нажатой кнопку мыши, проведите
стрелку.
· Нажмите
кнопку Текстовое поле на панели инструментов “Рисование” и, удерживая нажатой
кнопку мыши, выделите место для текста.
· Введите
текст “Число” и нажмите кнопку мыши вне текстового поля.
· Нажмите
правую кнопку мыши на текстовом окне. Появится меню, в котором выберите пункт
Формат объекта. После этого появится окно диалога “Форматирование объекта”. В
этом окне нам понадобятся вкладки: “Выравнивание”, “Шрифт” и “Вид”. Во вкладке
“Выравнивание” установите переключатели вертикального и горизонтального
выравнивания в положение по центру. Во вкладке “
Шрифт”
выберите шрифт TimesET, стиль Italic, размер 16. Во вкладке “Вид” установите
переключатель Рамка в положение Нет, в результате чего рамка вокруг текста
будет удалена.
· Нажмите
клавишу OK. Графический объект построен.
· Нажмите
кнопку На задний план, расположенную на панели инструментов “Рисование”. Текст
оказался под стрелкой.
· Нажмите
кнопку мыши на графическом объекте. Объект становится активным.
· Нажмите
правую кнопку мыши, когда ее указатель находится на объекте. Появится меню со
списком команд.
· Выберите Назначить
макрос. Появится окно диалога “Назначить макрос объекту” со списком
созданных макросов.
· Выберите
макрос “Число”. Имя макроса появится в верхней строке окна диалога.
· Нажмите
кнопку OK. Вы назначили макрос графическому объекту. Нажмите кнопку мыши вне
объекта, чтобы он перестал быть активным.
Если поместить
указатель мыши на изображение стрелки, то белый крестик перейдет в изображение
руки с отогнутым указательным пальцем. Нажатие левой кнопку мыши приводит к
выполнению макроса “Число”.
Пример 7.
Назначение макроса рисунку
Представлены
три рисунка, которым назначены созданные нами макросы “Месяц”, “Заголовок” и
“Число”.
Назначение
макроса рисунку ничем не отличается от назначения макроса графическому объекту,
которое было рассмотрено ранее. Рисунки взяты из каталога Windows. Они
содержатся в файлах WINLOGO.BMP, EGYPT.BMP и ARCHES.BMP.
Для назначения
макроса рисунку нужно выполнить следующие действия:
· Выполните
команду Вставка | Рисунок. Появится окно диалога выбора рисунка.
· Выберите
каталог Windows. В окне диалога появится список графических файлов.
· Выберите
файл WINLOGO.BMP и выбранный рисунок появится на рабочем листе Excel.
· Нажмите
правую кнопку мыши, когда ее указатель находится на активном рисунке.
· Из
всплывающего меню выберите команду Назначить макрос. Появится окно диалога со списком
макросов, в котором выберите требуемый. Нажатие кнопки OK завершает процесс
назначения.
· Нажмите
кнопку мыши вне рисунка, чтобы он перестал быть активным.
В ячейках A1:A3 вы можете увидеть результат
работы макроса “Число”, который был назначен рисунку “winlogo”. Для получения
результата мы выделили ячейки A1:A3 и переместили указатель мыши на рисунок
“winlogo”. Нажатие кнопки мыши привело к выполнению макроса “Число”, то есть к
форматированию ячеек A1:A3.
Примеры
макросов
Служебной кнопке
Excel также можно назначить макрос. При этом она потеряет свое первоначальное
предназначение. Для восстановления служебной кнопки сначала удалите ее с панели
в режиме настройки, а затем переместите оригинал из соответствующей категории
кнопок на требуемую панель инструментов.
В этом разделе
мы приведем примеры макросов, выполняющих следующие функции:
1.
Заполнение
ячейки числами, являющимися членами арифметической прогрессии с разностью
равной 0,5
2.
Назначение
встроенного формата диаграмм
3.
Вставка
значения вместо формул
Пример 10. Макрос
“Прогрессия”
В результате
работы макроса “Прогрессия” выделенные в строке ячейки заполняются числами,
являющимися членами арифметической прогрессии с разностью равной 0,5 или с
шагом 0,5.
Для записи
макроса “Прогрессия” выполните следующие действия:
· Введите в
ячейку A1 число 1000 и выделите ячейки A1:C1.
· Выполните
команду Сервис | Запись макроса | Начать запись. Появится окно диалога “Запись
макроса”.
· Введите в
поле ввода Имя макроса название записываемого макроса Прогрессия и нажмите
кнопку Параметры. Окно диалога “Запись макроса” расширяется.
· Перейдите на
латинский регистр и введите букву p для клавиши быстрого вызова макроса.
· Нажмите
кнопку OK в окне диалога “Запись макроса”, которое после этого закроется.
Начиная с этого момента, все ваши действия будут записываться в макрос. В
строке состояния появится слово “Запись”.
· Выполните
команду Правка | Заполнить | Прогрессия. Появится окно диалога «Прогрессия».
· Установите
флажок по строкам. Это означает, что прогрессия будет строится в выделенной
строке.
· Установите
флажок арифметическая. Это означает, что ячейки в строке будет заполняться
числами, являющимися членами арифметической прогрессии.
· В окне “Шаг”
введите число 0,5 — разность арифметической прогрессии.
· Нажмите
кнопку OK, чтобы выйти из окна диалога “Прогрессия”. Теперь нужно закончить
запись макроса.
· Нажмите
кнопку Остановить макрос.
Итак,
результаты работы макроса “Прогрессия”. Он запускается нажатием Ctrl+p. Перед
этим нужно ввести первый член прогрессии и выделить ячейки в строке, где будут
размещаться члены арифметической прогрессии с разностью 0,5.
После нажатия
клавиш Ctrl+p ячейки A1:G1 заполнятся числами 1000 1000,5 1001 1001,5 1002
1002,5 1003.
Если первая
ячейка среди выделенных не содержит число, то заполнение числами не произойдет
и ячейки останутся без изменения.
Пример 11. Макрос
“Диаграмма”
Этот макрос
будет восстанавливать стандартную диаграмму Excel. Если вы строили графики с
использованием пользовательского автоформата диаграмм, то для перехода к
стандартной диаграмме Excel вам достаточно будет запустить этот макрос.
Для записи
макроса “Диаграмма” выполните следующие действия:
· Выполните
команду Сервис | Запись макроса | Начать запись. Появится окно диалога “Запись
макроса”.
· Введите в поле
ввода Имя макроса название записываемого макроса Диаграмма и нажмите кнопку
Параметры.
· Перейдите на
латинский регистр и введите букву d для клавиши быстрого вызова макроса.
· Нажмите
кнопку OK в окне диалога “Запись макроса”. Начиная с этого момента все ваши
действия будут записываться в макрос. В строке состояния появится слово
“Запись”.
· Из меню
Сервис выберите команду Параметры. Появится окно диалога “Параметры”.
· Выберите
вкладку “Диаграмма”. В поле ввода списка Формат диаграммы по умолчанию отображается
название последнего использовавшегося пользовательского автоформата диаграммы.
· В списке
Формат диаграммы по умолчанию с помощью полосы прокрутки найдите значение
Встроенная и нажмите кнопку OK.
· Нажмите
кнопку Остановить макрос.
До запуска макроса
“Диаграмма” в качестве диаграммы по умолчанию строилась диаграмма формата Линии
.После нажатия клавиш Ctrl+d в качестве диаграммы по умолчанию будет
использоваться Встроенная. Макрос изменяет значение формата для
стандартной диаграммы. Обе диаграммы построены на наборе данных A1:E4, но с
использованием разных форматов.
Пример 12. Макрос
“Значение”
Действие этого
макроса аналогично нажатию кнопки Вставить значения. В ячейке остается только
результат работы формулы, а сама формула исчезает. Это очень важная функция,
поэтому приведем алгоритм записи соответствующих действий в макрос, который
впоследствии будет вызываться нажатием Ctrl+v.
Для записи
макроса “Значение” выполните следующие действия:
· Для
наглядности введите в ячейки A1 и A2 какие-нибудь формулы, например, следующего
вида: =COS(D1), =COS(D2). В ячейках D1 и D2 расположены числа.
· Выделите
ячейки A1 и A2.
· Выполните
команду Сервис | Запись макроса | Начать запись. Появится окно диалога “Запись
макроса”.
· Введите в
поле ввода Имя макроса название записываемого макроса Значение и нажмите кнопку
Параметры.
· Перейдите на
латинский регистр и введите букву v для клавиши быстрого вызова макроса.
· Нажмите
кнопку OK в окне диалога “Запись макроса”. Начиная с этого момента все ваши
действия будут записываться в макрос.
· Выполните
команду Правка | Копировать.
· Нажмите
мышью в первую ячейку выделенной области. В нашем случае это ячейка A1.
· Выполните
команду Правка | Специальная вставка. Появится окно диалога “Специальная
вставка”.
· Установите
признак Значения.
· Нажмите
кнопку OK для выхода из окна диалога “Специальная вставка”.
· Нажмите
мышью в первую ячейку выделенной области. В нашем случае это ячейка A1.
· Нажмите
клавишу Esc.
· Нажмите
кнопку Остановить макрос.
Работа с
макросом “Значение” осуществляется следующим образом. Сначала выделите блок
ячеек, в которых присутствуют формулы, а затем нажмите Ctrl+v. В выделенных
ячейках останутся только значения формул.
Результатом
работы формул может быть текст. После нажатия Ctrl+v формулы исчезнут и
останется только текст.
Если вы
хотите использовать макрос “Значение” вместо команды Специальная вставка,
запишите его с относительными ссылками.
Вывод
И в выводе,
целесообразно обобщить всё ранее сказанное и выделить основные моменты.
1.
Макрос
представляет собой записанную последовательность определенных действий.
2.
Для
записи макроса выполните команду Сервис | Запись макроса.
3.
Назначение
существующему макросу клавиши быстрого вызова и пункта меню выполняется с
помощью команды Сервис | Макрос.
4.
Команда С
относительными ссылками записывает макрос, обрабатывающий данные в любом месте
рабочей книги.
5.
Редактировать
текст макроса можно непосредственно в модуле с текстом.
6.
Для
удаления макроса нажмите мышью на его имени. При этом станут доступными кнопки
окна диалога “Макрос”, в том числе кнопка Удалить.
7.
Команда
Сервис | Назначить макрос назначает макросы графическим объектам.
8.
Введите в
поле ввода Имя макроса название создаваемого макроса и запишите новый макрос.
9.
Вы можете
вносить изменения непосредственно в текст программы, в которой на языке Visual
Basic for Applications записана последовательность действий макроса.
10.
Записанный
макрос можно запустить на выполнение одним из следующих способов:
— из
основного меню
— при
помощи кнопки на панели инструментов
— при
помощи кнопки на рабочей области
— нажатием
комбинации клавиш клавиатуры
— нажатием
кнопкой мыши на графическом объекте
Список
использованной литературы
1.
Андреева,
Е.В.Математические основы информатики. Элективный курс: учебное пособие/ Е.В
Андреева, Л.Л..Босова, И.Н. Фалина — М.: БИНОМ. Лаборатория знаний, 2011.
2.
Андреева,
Е.В.Математические основы информатики. Элективный курс: методическое пособие/
Е.В. Андреева, Л.Л. Босова, И.Н. Фалина — М.: БИНОМ. Лаборатория знаний, 2011.
3. Колдаев, В. Д. Сборник задач
и упражнений по информатике: учеб. пособие / В. Д. Колдаев, Е. Ю. Павлова; под
ред. Л. Г. Гагариной.– М.: Форум, 2010. – 254 с.
4.
http://pedsovet.su
5.
http://school89.hnet.spb.ru
в приложении
Лекция: «Создание макросов в приложении MS Ехсеl».
План лекции для студентов II курса:
- Понятие макроса.
- Запись простых макросов.
- Выполнение макросов.
- Назначение макроса для графическич изображений.
- Удаление макросов из списка макросов.
- Ограниченность макросов.
Понятие макроса.
Основное назначение макросов — это автоматизация работы пользователя.
Макрос — это имеющая имя последовательность заданных пользователем команд, и действий хранящаяся в форме программы на языке Visual Basic for Application (VВА), которую может выполнить
приложение.
На сегодняшний день Visual Basic for Application (VВА) — один из самых простых в изучении и применении языков программирования для автоматизации приложений, входящих в пакет Microsoft Offic.
Запись макросов в приложении Ехсеl:
Для работы с макросами в приложении Ехсеl имеется специальная панель.
Меню: Вид- Панель инструментов — Visual Basic.
Рисунок 1
Общий алгоритм записи макроса:
- Нажать на кнопку «Запись макроса» на панели Visual Basic
- В диалоговом окне «Запись макроса» дать имя макросу.
Первым символом имени макроса должна быть буква. В имени макроса не допускается использование пробелов.
Рисунок 2
- Выполнить действия, которые нужно записать.
- Нажать кнопку «Остановить запись» на панели Visual Basic.
Задание I
Рассмотрим процедуру записи макросов на примере очень простого макроса, который изменяет шрифт и цвет в выделенном диапазоне ячеек. Эти действия в Ехсеl можно выполнить многими различными способами (например, применение стилей, автоформатирования и т.д.), этот пример продемонстрирует последовательность действий пользователя, необходимые для записи макроса).
Рисунок 3
1. В ячейку А4 введите ваше имя, в ячейку А5 введите фамилию, в ячейку А6 — город, где вы родились, в ячейку А7 — название страны.
2. Установите курсор в ячейке А4.
3. На панели Visual Basic нажмите кнопку «Запись макроса» Рисунок 4
4. Введите название макроса «ЦветШрифт» и нажмите клавишу «ОК». На экране появится панель инструментов «Остановить запись» Рисунок 5
ВНИМАНИЕ! КАЖДОЕ ВАШЕ ДЕЙСТВИЕ ЗАПИСЫВАЕТСЯ.
5. Выполните команду Формат – Ячейки — Шрифт — Размер 11- Цвет красный — ОК.
6. Щелкните на кнопке «Остановить запись» на панели Visual Basic. Запись макроса завершена.
Выполнение макросов.
При выполнении макроса приложение Ехсеl повторяет те же действия, которые вы выполнили в процессе его создания. Продолжим работу с созданным макросом.
1.Установить курсор в ячейку А4.
2.Выполнить команду Сервис-Макрос-Макросы
Рисунок 6
3.Выделите макрос ЦветШрифт и Выполнить.
4.Аналогично с ячейками А3 и А4.
Назначение макроса графическим изображениям.
Продолжим работу с заданием I.
1. Используя панель Рисование, нарисуйте на листе любую автофигуру.
2.Щелкните правой кнопкой мыши на изображении и в открывшемся контекстном меню выберите команду Назначить макрос. Отобразится диалоговое окно Назначить макрос объекту.
3. Выберите макрос «ЦветШрифт» и подтвердите выполнение операции.
4. Щелкните вне графического изображения, чтобы снять выделение с объекта.
5. Введите число и проверьте выполнение макроса.
Рисунок 7
Удаление макросов из списка макросов:
Для того, чтобы удалить макрос из списка макросов диалогового окна Макросы надо:
1. Выполнить команду Сервис — Макрос — Макросы.
2. Выделить макрос, подлежащий удалению и щелкнуть по кнопке «Удалить».
3. Подтвердить выполнение операции в специальном окне, которое появится.
Ограниченность макросов
В Ехсеl многие процедуры можно выполнить с помощью макросов, но макросы имеют и ограничения. С помощью макросов нельзя выполнить различные действия в зависимости от содержимого ячейки, нельзя вызвать некоторые диалоговые окна Ехсе1, например, сохранить документ, нельзя отобразить и использовать пользовательские формы ввода данных.
Эти ограничения приводят к необходимости создания программ на VВА.
Задания для самостоятельного выполнения.
1.Введите в диапазон F1:F5 любые числа. Создайте макрос для очистки диапазона F1:F5. С помощью панели инструментов «Рисование» создайте кнопку с надписью «Очистить». Назначьте кнопке созданный макрос.
2. Введите в диапазон С2:С6 фамилии ваших друзей, а в диапазон D2:D6 занесите их телефоны.
Создайте две кнопки с названиями «Выделенное скопировать» и «Вставить». По нажатию на первую кнопку выделенный диапазон должен копироваться в буфер обмена. По нажатию на вторую кнопку информация из буфера обмена должна выводиться в текущую ячейку.
Задание II. Текст по столбцам
В столбец А введите исходные данные:
Рисунок 8
Рисунок 9
Необходимо номера и телефоны разнести по разным столбцам.
В Ехсеl существует специальная команда для выполнения этой операции
Данные — Текст по столбцам.
Технология работы:
- Выделите все ячейки столбца А, где занесены исходные данные;
- Выполните команду Данные-Текст по столбцам, появится диалоговое окно.
В этом окне укажите формат данных –« с разделителями». Нажмите кнопку «Далее». - Во втором диалоговом окне укажите символом – разделителем является «пробел» Нажмите кнопку «Далее».
- В третьем окне установите для каждого столбца данных формат данных
( текстовой) и «Поместить в – щелкните по нужной ячейки ( =$C$1 )»- первый столбец, (=$D$1) – второй столбец – «Готово»
Создайте макрос для разбора данных по ячейкам. Привяжите макрос к автофигуре. Создайте макрос для очистки ячеек, в которые заносятся разобранные данные.
ЗаданиеIII. Подведение промежуточных итогов с применением макросов.
Повторим Ехсеl, подведем промежуточные итоги, используя возможности программы, затем запишем макросы, которые будут автоматически, а не вручную подводить промежуточные итоги и убирать их с листа.
Рисунок10.
Технология работы.
- Откройте лист «Итоги»
- В столбце «Сумма» значение рассчитайте по формуле
- Отсортируйте таблицу по столбцу «Товар».
В процессе подготовки отчетов часто требуется подводить итоги. Возможности Ехсel позволяют автоматически вносить промежуточные итоги в таблицы, не задавая вручную области или формулы для них. Иногда требуется выделять и показывать на экране только часть информации из созданного отчета. В зависимости от цели отчета, в него может быть включена полная информация рабочего листа, только промежуточные и общие итоги или только общие итоги.
Рассмотрим использование команды «Итоги» на нашем примере. Подсчитаем, на какую сумму было продано отдельно ксероксов и отдельно факсов.
1.Установим курсор на любую ячейку отсортированной таблицы.
2.Выполним команду Данные-Итоги. В появившемся диалоговом окне «Промежуточные итоги» в строке При каждом изменении в выберем из открывшегося списка название графы «Товары», в строке Операция — функцию Сумма, в строке Добавить итоги по — выберем название графы «Сумма» — ОК
Создание макросов.
Установите курсор на исходную таблицу. Если таблица не отсортирована ,отсортируйте по полю «Товар» Данные-Сортировка.
1.Для создания 1 макроса активизируйте любую ячейку таблицы и MacroRecorde с помощью команды Сервис-Макрос-Начать запись. Назначьте имя макроса «Итоги»- ОК
2.Выполним команду Данные-Итоги
В диалоговом окне выберете в строке
При каждом изменении в выберем из открывшегося списка название графы «Товары», в строке Операция — функцию Сумма, в строке Добавить итоги по — выберем название графы «Сумма» — ОК
3.Активизируйте опцию Итоги под данным. Нажмите клавишу ОК
Остановите запись макроса, нажав на кнопку Остановить запись.
Просмотрите записанную программу. Для этого выполните команду Сервис-Макрос-Макросы. Выделите макрос «Итоги» и нажмите кнопку Изменить. Это вызовет появление главного окна редактора VВА с текстом записанного макроса .
4. Для создания 2-ого макроса «Убрать промежуточные итоги»:
Активизируйте MacroRecorde с помощью команды Сервис-Макрос-Начать запись. Появится диалоговое окно «Запись макроса». Назначить имя макроса «Убратьитоги» Установите курсор в исходную таблицу. Выполните команду Данные—Итоги. В появившемся окне щелкнуть по кнопке «Убрать все». Остановите запись макроса, нажав на кнопку Остановить запись.
На листе «Итоги» создадим кнопки и привяжем к ним созданные макросы .
Подведение итогов урока:
- Как автоматизировать действия в приложениях.
- Дать понятие Макроса.
- Перечислить порядок записи простых Макросов
- Выполнение Макросов.
- Назначение Макроса графическим объектам.
- Ограниченность Макросов.
- Попробуйте создать Макросы в Microsoft Word.
Кафедра физики, математики
и информатики ПСПбГПМУ им. И.П. Павлова
Практическая работа
практикум
по программированию
на
языке
Visual Basic for Application
Санкт–Петербург
2014
Методические
указания
У
вас уже есть начальные знания о работе
с табличным процессором, и вы знакомы
с рабочей книгой, рабочим листом Excel
и умеете ими пользоваться (создавать,
удалять, переименовывать, вставлять и
т.п.). Вы знаете
относительные и абсолютные способы
адресации ячеек рабочего листа Excel,
умеете задавать и осознанно выбирать
формат ячейки, знакомы со способами ее
оформления
(шрифт, фон, рамки). Вы уже умеете
программировать
формулы
в Excel
и пользоваться встроенными функциями.
Наконец, вы сами можете отформатировать
пользовательскую таблицу, данные в
которой были бы организованы по строкам
и столбцам, имели вполне определенный
практический смысл и требовали бы некой
обработки, в частности, вычислений.
Термином
«макрос»
обычно называют файл, хранящий
последовательность действий, заданных
пользователем системы. Каждый макрос
должен иметь собственное
имя. Макрос
–
это именованная последовательность
заданных пользователем команд и действий,
хранящаяся в форме программы на языке
VBA
(Visual
Basic
for
Application).
Язык программирования (Visual
Basic)
поддерживает идеологию объектно–ориентированного
программирования, является языком
визуального проектирования приложений
и языком управления событиями. Событие
– распознаваемое
объектом действие,
для которого можно запрограммировать
отклик.1
Файл
с макросами помогает автоматизировать
типовые технологические этапы при
работе с системой. Если макрос создан,
то после его запуска хранящаяся в нем
последовательность действий (команд)
будет автоматически исполнена.
Макрос
представляет собой программу и может
быть создан автоматически в специальном
режиме работы программной среды (в том
числе и Excel) или как результат
программирования (VBA),
отредактирован, могут быть устранены
ошибки и добавлены новые возможности.
Средство
VBA
в MS
Excel
является универсальным инструментом
для быстрого и точного решения любых
пользовательских задач в MS
Excel.
Готовый файл с макросами нужно сохранить.
Для этого необходимо войти по вкладке
«Файл», команда «Сохранить как…», в
выпадающем списке выбрать «Книга Excel
с поддержкой макросов» (рисунок 1).
Рисунок
1. Сохранение файла
с макросом
При
первоначальном запуске системы вкладка
«Разработчик», в группе «Код» которой
расположены «Visual
Basic»,
«Макросы», «Безопасность макросов»,
«Запись макроса» и «Относительные
ссылки» может отсутствовать, поэтому
необходимо изменить основные параметры
работы с Excel.
Для этого выберем вкладку «Файл»,
команду «Параметры» / «Настройка ленты»
и поставить галочку для вкладки
«Разработчик»
(рисунок 2):
Рисунок
2. Добавление вкладки «Разработчик» на
ленту
В
начале работы диалоговое окно Макрос,
вызываемое пунктом
Макросы,
может показать пустой список. Вкладка
«Разработчик» / «Код» «Безопасность
макросов» открывает
дополнительное окно,
позволяющее задавать уровень безопасности
при его использовании (рисунок 3).
Рисунок
3. Параметры макросов
Рисунок
3. Параметры макросов
При
работе с Excel,
как, и с другими программами пакета
Microsoft
Office,
для создания
макроса легче всего использовать
автоматический режим, вызываемый по
вкладке «Разработчик», группа «Код»
команда «Запись макроса». В этом случае
применяется стандартное средство записи
– MacroRecorder,
посредством которого можно записывать
последовательность действий пользователя,
которые автоматически преобразуются
в программный код на языке VBA.
При
выборе команды «Запись макроса»
открывается диалоговое окно, позволяющее
задать имя макроса и, комбинацию клавиш,
с помощью которой он может быть вызван,
выбираем пункт Начать
запись, по
умолчанию система предлагает стандартное
имя Макрос#,
напишите собственное
имя макроса,
отличное от стандартного. С этого момента
все Ваши действия записываются
в файл макроса. Остановить запись макроса
можно кнопкой
«Остановить
запись» дополнительно открывшейся
панели инструментов или по вкладке
«Разработчик», группа «Код», команда
«Остановить запись». Записанный макрос
может быть сохранен
в текущей рабочей книге, в
личной книге
макросов. В последнем случае он может
быть доступен в любой открытой книге.
Удалить
макрос, созданный в текущей рабочей
книге, можно кнопкой «Удалить»
диалогового окна по вкладке «Разработчик»,
группа «Код», команда «Макросы».
После
записи макроса его можно редактировать,
для этого необходимо выделить макрос
и в диалоговом окне выбрать кнопку
«Изменить», откроется окно редактора
Visual
Basic
for
Application.
Рисунок
4. Редактирование макроса
Редактор
Visual Basic вызывается
по вкладке «Разработчик», группа «Код»,
команда «Visual
Basic».
Рисунок
5. Вызов редактора VBA
Для
быстрого запуска макроса можно создать
кнопку и присвоить ей имя макроса. Для
этого выбираем вкладку «Разработчик»,
группу «Элементы управления» и кнопку
«Вставить», появляется выпадающее меню
«Элементы управления формы». Выбрав
элемент управления «Кнопка» размещаем
его на экране (рисунок 6). Появляется
окно «Назначить макрос объекту» (рисунок
7), в котором вводим название макроса
или выбираем из списка уже имеющийся.
Осталось только переименовать вновь
созданную кнопку (выделить старое
название «Кнопка1» и написать новое).
Рисунок
6. Добавление элементов управления
Рисунок
7. Назначение макроса объекту
Стиль
ссылок в формулах в среде VBA
В
среде VBA
существует два типа записи ссылок на
ячейки в Excel –
A1 и
R1C1.
По умолчанию,
при программировании формул, используется
стиль A1,
для которого адрес каждой ячейки
представляет собой строку символов,
содержащую имя столбца и номер строки.
Использование этого стиля позволяет
организовать относительную и абсолютную
адресацию (вводится символ $) к ячейкам
таблицы. Тем не менее, иногда при
записи макросов
Excel использует
тип ссылки R1C1.
В обозначении этого типа присутствуют
первые буквы английских слов Row (строка)
и Column (колонка). Обратите внимание на
то, что, в отличие от типа A1, при
использовании типа ссылок R1C1
сначала записывается строка,
а потом столбец.
При использовании абсолютной
адресации после
символов R и C указывается собственно
номер строки и столбца. При использовании
относительной адресации в стиле
R1C1, после
обозначения строки или колонки в
квадратных скобках указывается смещение
по отношению к текущей ячейке.
-
RC
— относительная ссылка на текущую ячейку -
R3C2
— то же самое, что $B$6 (абсолютная ссылка) -
RC5
— ссылка на ячейку из пятого столбца в
текущей строке -
RC[-1]
— ссылка на ячейку из предыдущего столбца
в текущей строке -
RC[2]
— ссылка на ячейку, отстоящую на два
столбца правее в той же строке -
R[2]C[-3]
— ссылка на ячейку, отстоящую на две
строки ниже и на три столбца левее от
текущей ячейки -
R5C[-2]
— ссылка на ячейку из пятой строки,
отстоящую на два столбца левее текущей
ячейки
Для
включения стиля R1C1
необходимо перейти по вкладке «Файл»
команда «Параметры» / «Формулы» и
поставить галочку в разделе «Работа с
формулами» стиль ссылок R1C1.
Основные
понятия языка VBА2
Объекты
– рабочая книга, рабочий лист и его
составляющие
Примеры
объектов:
Sheet,
Worksheets
– лист Excel
Cell
– ячейка
Range
– диапазон ячеек
Application
– приложение
UserForm
– пользовательская форма
Доступ
к объекту возможен через его методы и
свойства.
Примеры:
Cells(1,
1) – ячейка А1
Cells(1,
2) — ячейка В1
Range(Cells(1,
1) , Cells(5, 3)) – диапазон
А1:С5
Методы
Над
объектом можно совершать различные
действия, которые называются методами.
Например,
ячейку можно очистить (Clear),
приложение закрыть (Quit),
пользовательскую форму показать (Show)
или скрыть (Hide).
Selection
–
выбирает объект или группу объектов.
Activate
–
активизирует выбранный объект.
Название
метода отделяется от названия объекта
точкой: объект.метод.
Примеры
использования методов:
Range(“B2:E2”).Select
– выбрать диапазон ячеек B2:E2;
Range(“C1:C5”).Clear
– очистить диапазон ячеек C1:C5;
Worksheets(“Лист1”).Activate
– активизирует Лист1;
UserForm2.Hide
– скрыть форму № 2;
UserForm5.Show
– показать форму № 5;
Application.Quit
– выйти из приложения.
Свойства
Свойствами
описываются характеристики объектов.
Например, размер и цвет шрифта, положение
формы на экране или состояние объекта
(доступность, видимость). Чтобы изменить
характеристику объекта, надо просто
изменить значение свойства, т.е. присвоить
ему определенное значение.
Объект.Свойство
= ЗначениеСвойства
Примеры:
Range(“D1”).Value
= 2005 – поместить в ячейку D1
значение 2005
Range(“A11”).Value
= “информатика” – поместить в ячейку
A11
текст «информатика»
Методы
и свойства некоторых объектов VBA
Sheets(“Исследования”).Select
– выбрать лист Исследования
Sheets(“Исследования”).Range(“B4:B10”).Select
– выделить диапазон B4:B10
на листе Исследования
События
Событие
представляет собой действие, распознаваемое
объектом (например, щелчок мышью или
нажатие клавиши), для которого можно
запрограммировать отклик, т.е. реакцию
объекта на произошедшее событие –
выполнение программы. Такая программа
называется процедурой обработки событий
и имеет стандартное имя.
Элементы
языка VBA
Объекты
Константы
–
числовые (целое, вещественное число) и
символьные (заключаются в “”)
Переменные
– данные, которые меняются в ходе
выполнения программы, задается имя и
тип. В имени нельзя использовать “.”,
“ “, “!”, “%”, “&”, “$”, “#”, “@”.
Длина имени не должна превышать 255
символов.
Основные
типы переменных, их размеры и диапазоны
принимаемых значений приведены в таблице
1.
Таблица
1. Типы переменных
Тип |
Размер |
Диапазон |
Byte |
1 |
от |
Boolean |
2 |
True |
Integer |
2 |
от |
Long |
4 |
от |
Single |
4 |
для |
Double |
8 |
для |
Currency |
8 |
числа |
Date |
8 |
от |
String |
10+длина |
от |
String |
задается |
от |
Variant |
для |
значения |
для |
от |
|
Object |
4 |
используется |
В
таблице 2 приведен пример некоторых
функций.
Объект
Application
позволяет вызвать функции при помощи
конструкций вида:
Application.Функция
(действия
над объектами)
Примеры:
Application.Sum(Sheets(“Исследования”).Range(“B2:B15”))
– суммируются значения из ячеек диапазона
B2:B15,
расположенного на листе «Исследования».
Range(«F2:F5»)
= Rnd(5)
– в диапазон от F2
до F5
записывается случайное число от 0 до 5.
Sheets(“Числа”).Cells(5,1)
= Int (Rnd() * 100) – 50.
Таблица
2. Функции
Функция |
Выражение |
Математические |
|
Abc(x) |
Модуль |
Cos(x) |
Косинус |
Exp(x) |
Экспонента, |
Log(x) |
Натуральный |
Sin(x) |
Синус |
Sqr(x) |
Квадратный |
Rnd() Rnd(x) |
генерирует генерирует |
Int() |
округляет |
Функции |
|
Date |
Текущая |
Now |
Текущая |
Day |
День |
DateDiff |
Разность |
WeekDayName |
Название |
Структура
редактора VBA
Редактор
активизируется вкладкой
«Разработчик»/»Код»/»Visual
Basic»
(рисунок 8):
Меню
Панель
инструментов
Возврат в
рабочую книгу нажатием кнопки MS
Excel
Окно проекта
Окно свойств
Окно
редактирования кода
Окно редактора
состоит из следующих компонентов:
Рисунок
8. Структура редактора Visual
Basic
Процедуры
и модули для кода VBA
Программа
–
последовательность операторов, включая
оператор комментариев (для этого вводится
(‘) или слово Rem
вместо апострофа, комментируется текст
до конца строки).
Модуль
– совокупность
объявлений (описательная часть) и
процедур, хранящихся как единое целое
Процедура
– совокупность кода VBA,
рассматриваемая как единое целое, имеет
свое уникальное имя. Выполнение процедуры
является реакцией на какое-либо событие,
т.е. процедура обрабатывает событие,
ограничивается ключевыми словами Sub
….. End
Sub.
Описание
данных начинается с оператора Dim.
Тип переменных лучше указывать, так как
от типа данных зависит время выполнения
процедур и ресурсы памяти.
Пример:
Dim
A As Integer, B As Byte, C As String
Для
объявления констант и их значений
используется оператор Const.
Пример:
Const
Рост_девочки
As Byte = 11
Управляющие
структуры VBA
Управляющие
структуры определяют последовательность
выполнения программы.
Условные
операторы
1)
If
условие
Then
выражение
– для одной строки
If
условие
Then
выражение1,
выражение2 End
If
– в
случае истинности условия выполняется
последовательность операторов
If
условие
Then
выражение1,
… Else
выражение2, … End
If
– в
зависимости от условия выполняются
разные блоки операторов
If
условие
Then
выражение1,
… ElseIf
условие Then
выражение2,
… Else
выражение3, … End
If
– определяет
вложенность конструкций
2)
Select
Case
проверяемое
выражение
Case
список
выражений1
блок
операторов1
Case
список
выражений2
блок
операторов2
Case
список
выражений3
блок
операторов3
….
Case
Else
{не
обязательный блок}
End
Select
Каждый
список выражений может содержать одно
или более значений, которые отделяются
запятыми.
Операторы
цикла
фиксированное
число повторений
1)
For
переменная
= M1
To
M2
[Step
M3]
операторы
Next
Если
шаг не указан, то он полагается равным
1.
переменное
число повторений
2) Do
While
условие
операторы
Loop
Цикл
с предусловием. Все операторы
выполняются до тех пор, пока условие
будет истинным.
3)
Do
…
Loop
Until <условие>
Цикл
с постусловием. Проверяется условие
перед началом цикла и цикл выполняется
до тех пор, пока оно False.
Как только условие цикла станет равно
True,
выполнение цикла прекратится.
Макрос3()
Range(«D2»).Select
ActiveCell.FormulaR1C1
= «=(RC[-1]*10000)/RC[-2]^2»
Selection.AutoFill
Destination:=Range(«D2:D5»), Type:=xlFillDefault
Range(«D2:D5»).Select
Range(«D6»).Select
ActiveCell.FormulaR1C1
= «=AVERAGE(R[-4]C:R[-1]C)»
Range(«E2»).Select
ActiveCell.FormulaR1C1
= _
«=IF(RC[-1]<18,»»low»»,IF(AND(RC[-1]>18,RC[-1]<24),»»middle»»,»»heigh»»))»
Selection.AutoFill
Destination:=Range(«E2:E5»), Type:=xlFillDefault
Range(«E2:E5»).Select
End
Sub
Пример
1.
Рассмотрим таблицу, показанную на
рисунке 9. В ней необходимо рассчитать
индекс массы тела (ИМТ) каждого пациента,
рассчитать среднее значения индекса
по всем пациентам и выставить оценку
индекса. Записывался макрос с именем
Макрос3.
Рисунок
9. Таблица с расчетом ИМТ
Рассмотрим
листинг макроса.
Первый
исполняемый оператор программы
Range(“D2”).Select
создан системой в
виде выражения, которое содержит в
терминологии VBA свойство Range в сочетании
с методом Select. Обратите внимание на то,
что свойство имеет записанный в круглых
скобках аргумент в виде строки символов
и отделяется от метода точкой. В нашем
примере аргумент свойства представляет
собой ссылку на ячейку в стиле A1, с
которой началось программирование
макроса.
Фактически
анализируемая строка программы
представляет собой набор действий по
активизации ячейки C3 рабочего листа
Excel. Система всегда одинаково интерпретирует
действия пользователя Excel, поэтому в
случае затруднений с анализом результатов
ее работы удобно создать новый
дополнительный макрос как результат
конкретного короткого действия и изучить
его содержимое. Наконец, в особо сложных
случаях можно скопировать текст
созданного макроса, изменить его имя и
запустить его из Excel для того, чтобы
увидеть результат действий интересующего
вас оператора.
Отдельно
остановимся на
заливке ячеек, диапазона ячеек.
Цвет
фона ячейки в Microsoft
Office
Excel определяется
свойством ColorIndex
объекта Interior
этой ячейки.
Так,
заливка ячейки осуществляется командой:
Cells(4,5).interior.colorindex
= 5, где
5 – синий
цвет
или
Заливка
некоторого диапазона –
Range(“A1:D1”).interior.colorindex
= 3, где
3 – красный
цвет
Установка
цвета текста:
Cells(4,5).Font.Color
= vbBlue
Range(“A1:D1”).
Font.Color
=vbRed
Числовой
индекс цветов и константы RGB
представлены в таблице 3.
Таблица
3. Числовой индекс цвета и константы RGB
код |
цвет |
константы |
цвет |
|
1 |
черный |
vbRed |
красный |
|
2 |
белый |
vbBlack |
черный |
|
3 |
красный |
vbGreen |
зеленый |
|
4 |
зеленый |
vbYellow |
желтый |
|
6 |
желтый |
vbBlue |
синий |
|
7 |
малиновый |
vbMagenta |
фиолетовый |
|
33–42 |
пастельные |
vbCyan |
бирюзовый |
|
9–14, |
темные |
|||
Если
мало стандартных цветов (56 цветов) то
используют RGB
палитру, например
Cells(3,4).Interior.Color
= RGB(160,255,30)
Введение
Большинство
специалистов используют операционную систему Windows на
рабочих местах предприятия и на индивидуальных компьютерах. Следует отметить,
что на предприятиях устанавливают требования (внутренние стандарты) на
использование приложений MS Office для
подготовки распространения файлов. Жизнь показала, что стандарты предприятия на
использование операционных систем и приложений, отстают от тех возможностей,
которые предоставляют пользователям разработчики системы Windows. Например, широко распространённое приложение для
работы с данными MS Excel, постоянно добавляется новыми возможностями,
претерпевает некоторые изменения в интерфейсе. По этой причине, автор данного
пособия постарался учесть некоторые особенности версий MS Office,
раскрывая правила работы пользователя, как с версиями MS Office 2003 (это
основной стандарт для предприятий), так и с более поздними версиями, для
которых разработчики ввели ленточный интерфейс
в строке Меню. Для демонстрации различий между отображением интерфейсов
приложений MS Office, которые работают под управлением одной и той же
операционной системы Windows
XP, на рис 1 представлено отображение интерфейса
приложения Word 2003, а на рис 2 – Word 2007. Следует напомнить, что в приложениях MS Office
2003 (или в более ранних версиях) имелась строка Меню, к каждому наименованию в
строке прикреплялся разворачивающийся список с командами для вызова
определённой функции, а также создавалась панель инструментов в виде пиктограмм
с наиболее часто используемыми функциями для поддержки работы пользователя (рис
1). В версиях MS Office, начиная с 2007, строка Меню состоит из закладок
(Главная, Вставка, Разметка страницы и т.д.), при активизации которых,
раскрывается лента в виде пиктограмм с перечнем функций для работы пользователя
(рис 2).
Рис. 1. Интерфейс приложения Word 2003
Рис. 2. Интерфейс приложения Word 2007
В предлагаемом пособии рассмотрены конкретные примеры постановки
задач и их реализации в приложениях MS Office. Задачи предлагаются на
практических занятиях по дисциплинам Информатика, Информационные технологии в
управлении, Исследование социальных и политических процессов. Автор пособия не
ставил перед собой цели по созданию универсального свода примеров по каждой
дисциплине, а лишь предлагает рассмотреть наиболее характерные постановки задач
для ввода, преобразования и обработки данных, которые встречаются в указанных
дисциплинах. Инструментом для обработки и анализа данных на рабочем месте
пользователя, часто являются приложения MS Office, которые
используются в качестве программных средств подготовки данных для передачи
(экспорта) их в другие приложения, или используются в качестве средства для
обработки данных при получении (импорте) их из других источников и приложений.
На этом основана технология распределённой обработки данных, независимо от той
среды, в которой работает конечный пользователь. Следовательно, целесообразно
вводить в приложения MS Office элементы
автоматизации работы с данными, для чего используются элементы управления, а
реализуется всё либо с помощью макросов, либо с использованием языка Visual Basic for Application.
Раздел 1. О назначении
языка программирования Visual Basic for Application
Событийный подход в программировании
Событи́йно-ориенти́рованное
программи́рование (англ. event—driven
programming; в дальнейшем СОП) — парадигма программирования, в
которой выполнение программы определяется событиями — действиями пользователя
(щелчок по кнопке мыши, попадание курсора в определенную позицию, изменение
атрибутов того или иного объекта, переполнение буфера памяти и т.д.),
сообщениями других программ, событиями операционной системы (например,
поступлением сетевого пакета). Программа
представляет собой совокупность возможных сценариев обработки данных, выбор
которых инициируется наступлением того или иного события. Событийный подход к
программированию включает использование объектов, способных реагировать на
события, происходящие в системе.
Корпорация
Microsoft интегрировала
в свои офисные продукты, а также во все версии операционной системы Windows, простой в понимании и удобный в использовании язык
программирования Visual Basic for Application (VBA), который
берёт своё начало от объектно-ориентированного языка программирования Visual Basic (VB). Это средство разработки программного обеспечения,
сочетает в себе процедуры и элементы объектно-ориентированных языков
программирования. Среда разработки VB включает инструменты для визуального
конструирования пользовательского интерфейса, в итоге создаётся загрузочный
модуль, который может работать независимо. Язык VBA позволяет пользователю создавать приложения,
структуры данных и управляющие структуры, что позволяет реализовать следующие
возможности: создание нестандартных диалоговых окон с базовым набором элементов
управления, написание процедур для приложений MS Office,
обрабатывающих события, которые возникают при тех или иных действиях
пользователя или системы.
Особенности языка программирования VBA
Язык
программирования VBA не позволяет создавать
независимое приложение. Проект (программа) в VBA обязательно должен взаимодействовать с каким-либо
документом (Word, книга Excel, база данных Access). Документ рассматривается как доступный объект (Application) из программных кодов. Но, вместе с тем, программист
получает возможность автоматизировать работу пользователя с любым приложением MS Office.
Под автоматизацией работ подразумевается выполнение ряда рутинных операций,
которые приходится осуществлять пользователю при работе как с внутренними
данными (данные в приложении), так и с внешними источниками данных (файлы,
таблицы, гистограммы и т.п.). Чтобы вызвать событие со стороны пользователя или
отобразить результаты выполнения операций над данными в VBA используют
элементы управления. Следует отметить, что набором типовых элементов
управления, которые наиболее часто встречаются во всех интерфейсах Windows, являются: кнопки, текстовые окна, надписи, списки,
средства для выбора. Эти элементы управления всегда доступны, хотя, часто
появляется необходимость (как и при использовании VB) подключать дополнительные элементы управления,
которые можно выбрать из реестра Windows, раскрыв
пиктограмму — Другие
элементы, на панели инструментов. Каждый элемент управления связан с
набором событий, которые выбирает разработчик, при создании процедуры обработки
события, так на рис 3 представлен пример набора возможных событий для элемента
управления командная кнопка. После свершения события (нажатие на клавишу,
щелчок мышью и т.п.) подключается процедура, которая включает в себя набор
программных кодов (в основном операторы языка программирования), созданных
программистом по заранее намеченному алгоритму. Как правило, результатом работы
процедуры является преобразование данных (видоизменение, проведение расчетов,
изменение свойств объектов, создание файлов, отображение на экране пользователя
определённых сведений и т.п.).
Рис. 3. Перечень событий для командной кнопки
Разработчики
интерфейсов для приложений MS Office наиболее
часто используют стандартные элементы управления, перечень которых приведен в
таблице 1.
Таблица 1. Перечень наиболее часто используемых
элементов управления
Обозначение |
Имя в VBA |
Название |
|
CommandButton |
Кнопка |
|
TextBox |
Поле |
|
Label |
Надпись |
|
ListBox |
Список |
|
ComboBox |
Поле со списком |
|
OptionButton |
Переключатель |
|
CheckBox |
Флажок |
|
Image |
Рисунок |
Раздел 2. Разработка программных кодов на VBA
Обработка данных с
использованием средств VBA.
Предположим,
что в организации не так много сотрудников, поэтому отдел кадров ведёт всю
документацию с использованием приложений MS Office.
Безусловно, основные данные о сотрудниках целесообразно хранить в виде
отдельных файлов, к которым по мере необходимости можно обращаться. Сведения о
сотрудниках в основном содержат структурированную текстовую информацию, которая
может находиться в книге Excel
и отображаться в виде таблицы, как это
показано на рис 4.
Рис. 4. Таблица со списком сотрудников
Таблица с исходными данными (рис
4) может быть использована для обработки данных в Excel стандартными
приёмами (сортировки, подведение итогов, отборы по заданным параметрам и т.д.).
Можно использовать эту таблицу в качестве источника данных для создания
автоматизированных форм, которые не потребуют от исполнителя каких-либо знаний
функциональных возможностей Excel. Для этой
цели достаточно провести анализ потребностей исполнителя и создать небольшой
интерфейс с внедрением на лист Excel
элементов управления, которые позволят в
автоматизированном режиме выполнять набор стандартных операций. В частности,
сохранять требуемые данных в отдельных файлах, осуществлять отбор данных по
заданным параметрам, формировать выходные документы. Автоматизация работы с Excel предусматривает
внедрение макросов и программ на языке программирования Visual Basic for Application (VBA), о чём в
дальнейшем и пойдёт речь.
Проектирование
интерфейса анализа количества записей в таблице и отображение данных в виде
списка
Алгоритм
автоматического определения количества строк в таблице и переноса отдельных
полей в окно со списком очевиден. Необходимо с определённого места
последовательно просматривать данные одного столбца, проверять на наличие
записанного данного в ячейке и передавать в элемент управления поле со списком.
В том случае, если в ячейке ничего не будет записано, тогда следует прекратить
просмотр элементов столбца и отобразить в текстовом окне на листе Excel количество просмотренных записей в столбце.
Воспользуемся уже готовой книгой
Excel с
наименованием Form1.xls, откроем этот файл и сохраним его под новым именем
(на всякий случай), например, зададим имя файла – Form2.xls. Прежде всего,
необходимо подготовить среду для разработки интерфейса пользователя и
программных кодов на VBA. Для этого
(правильнее всего), работая с Excel 2003, в
строке Меню следует выбрать: Вид→Панели инструментов→Visual Basic. На
экране появится новая панель инструментов, которую можно ухватить мышкой и
переместить в любое место (лучше на общую панель инструментов), панель
инструментов Visual Basic с
основными элементами показана на рис 5.
Рис. 5. Панель инструментов Visual Basic
Активизация кнопки — Элементы
управления, приведёт к открытию дополнительной панели инструментов с таким
же названием, на которой находятся основные элементы управления, её внешний вид
представлен на рис 6. Если подвести указатель мыши к любой пиктограмме на
панели инструментов, то будет показана подсказка с наименованием элемента.
Рис. 6. Панель – Элементы управления
Пиктограмма — Режим
конструктора при нажатом положении позволяет на рабочем листе поместить необходимый
элемент управления, а затем масштабировать его и изменять (задавать) свойства.
Так, для запуска программного приложения на VBA, необходимо создать событие – нажать на кнопку (Click). После размещения кнопки на рабочем листе, она будет
иметь следующий вид: ,
что не устраивает разработчика. Поэтому, следует воспользоваться пиктограммой — Свойства
(на панели Элементы управления). На рис 7 представлено окно Properties (Свойства)
для элемента управления – Кнопка,
некоторые свойства были изменены, к ним относятся: BackColor, Caption, Font, ForeColor и MousePointer. Изменение свойств осуществляется либо путём ввода
текста в окно с наименованием свойства, либо путём выбора варианта свойства из
раскрывающегося списка. Остальные свойства задаются «по умолчанию», т.е. при
размещении элемента на листе книги автоматически запоминаются размеры элемента,
его местоположение, а так же многие свойства оставляются неизменными, например Visible (Видимость).
Обратите внимание, что имя свойства, состоящее из двух и более слов,
представляется слитно, так как по правилам программирования, в программных
кодах имена переменных и элементов не должны иметь разрывов (символ пробел
недопустим).
Рис. 7. Окно свойств элемента управления – Кнопка
Для отображения
количества строк в таблице (в столбце) на листе Excel размещён элемент — Поле,
которому так же можно задать собственные свойства, например, отображение числа
записей в таблице будет: синим цветом, шрифт которого – Arial 18pt. Элемент — Надпись
обычно используется для отображения пояснений в виде текста, поэтому его
целесообразно размещать около элементов управления. В данном примере на листе Excel создано
две надписи около элемента Поле (TextBox) и элемента Поле со списком (ListBox). Для удобства работы пользователя целесообразно
создать ещё одну кнопку, при нажатии на которую будут удаляться данные из
текстовых окон. В результате, выполняемых действий при размещении элементов
управления на листе Excel, внешний вид его будет
таким, как показано на рис 8.
Рис. 8. Элементы управления, размещённые на листе Excel
Разработка программы на
VBA
После того, как на листе Excel размещены необходимые элементы управления с заданными
свойствами, можно приступать к разработке программных кодов на VBA и
отладке программы. Удобством VBA является то, что в нем можно использовать в качестве
имён переменных зарезервированные слова для обозначения книги, листа и ячеек.
Совокупность ячеек представляют двумерный массив, в котором указывается
абсолютная адресация текущей ячейки относительно верхнего левого угла. Если
результаты обработки данных следует отобразить на том же листе, то в программе
нет необходимости указывать имя книги и имя листа.
Разработка программных кодов
осуществляется в окне программных кодов (Code), внешний вид которого представлен на рис 9.
Открывать окно для создания программных кодов лучше всего двойным щелчком по
элементу управления. В рассматриваемой задаче, подразумевается, что при нажатии
на кнопку с наименованием «Просмотреть список» будет запущена программа для
подсчёта количества строк в списке и в окне Поле
со списком будут отображены все фамилии сотрудников.
Рис. 9. Внешний вид окна для записи программных кодов
в процедуру
Следует напомнить, что в более
сложных задачах возможен вариант, когда потребуется использовать данные из разных книг Excel и листов, которые принадлежат этим книгам, по этой
причине следует ориентироваться в именах, которые им присваиваются во время
создания. Так, например, рассматривая рис 9, можно увидеть, что книга имеет имя
– Form2, а лист, на котором находятся данные носит название –
Кадры, хотя другие листы этой книги
сохранили свои имена (Лист2 и Лист3), которые им присвоены по умолчанию
системой при открытии книги Excel. При
внедрении элемента управления Кнопка
на лист, система ей присвоила имя (свойство Name) – CommandButton1,
которое не менялось (хотя согласитесь, что это слишком громоздко, можно
придумать самому имя, например, С1).
Обработка события Click, которое вызывает пользователь, нажав на кнопку с
наименованием «Посмотреть список», осуществляется процедурой Private Sub
CommandButton1_Click(), внутри которой расположена программа. Программные коды представлены на рис 10.
Рис. 10. Программа
обработки события – нажать на кнопку «Посмотреть список»
Конструкция условного оператора While … Wend создана для того, чтобы в цикле просматривать
содержимое ячеек, начиная с ячейки B3, что
соответствует в записи Cells(i,2), где начальному значению i присвоено число
3 (номер строки), а 2 обозначает номер столбца в таблице. Так как неизвестно,
сколько требуется просмотреть строк, то в качестве условия в операторе While записано
выражение: Cells(i,2)<>””. Это условие трактуется следующим
образом: просматривать ячейки до тех пор, пока их содержимое будет иметь
какие-либо символы, в противном случае, когда встретится пустая ячейка –
прекратить просмотр и выйти из цикла. Так как оперируем с текстовой
информацией, то признаком отсутствия данных в ячейке является сочетание
символов “”. Отображение данных
осуществляется в окне со списком (ListBox1
– это его имя), в который добавляются значения, полученные из ячеек с номерами
сотрудников и фамилий сотрудников. AddItem –
это метод (маленькая стандартная подпрограмма), поэтому присоединение метода к
имени объекта осуществляется через точку. Выражение: Cells(i, 1) &
» » & Cells(i, 2), имеет знак & (амперсанд), который показывает,
объединение значений нескольких переменных (в данном случае их 3). Первая
переменная Cells(i, 1) – это
значение номера сотрудника, вторая » » – пробел, третья Cells(i, 2) – значение
из ячейки с фамилией. Таким образом, в окне отобразится номер и фамилия
текущего сотрудника, если предварительно отсортировать данные в таблице Excel, например, по фамилиям сотрудников, то номер его
сохранится в том виде, какой был ему присвоен
при вводе данных. В программе использованы переменные i и k, первая из которых обозначает номер просматриваемого
столбца, а вторая введена для подсчёта количества просмотренных ячеек в цикле.
Отображение количества просмотренных строк осуществляется в текстовом окне (TextBox) с помощью оператора присвоения TextBox1.Text = k. Следует обратить внимание на то обстоятельство, что
объекту с именем TextBox1 присваивается
(передаётся) значение переменной k, поэтому к
имени переменной через точку добавляется имя свойства Text (TextBox1.Text).
Пользователь может добавлять в
исходную таблицу новые строки или вводить исправления в данные, поэтому для
того, чтобы посмотреть новый список, целесообразно его очистить. Для этой цели
и была создана кнопка «Удалить сведения», текст этой программы приведён на рис
11.
Рис.11. Программа для очистки текстовых окон на листе Excel
Имя кнопки «Удалить сведения» оставлено без
изменения, как это предложила система. После свершения события Click по
кнопке запускается программа, которая обрабатывает два объекта. Первым объектом
является список с именем ListBox1,
который содержит несколько строк (комплекс данных), поэтому следует запустить
метод Clear (Очистить).
Вторым объектом с именем TextBox1
является текстовое окно (Поле) для обнуления которого достаточно свойству Text присвоить пустое значение (пробельную строку).
Окончательный вариант интерфейса для пользователя на листе Excel представлен
на рис 12. Можете
посмотреть пример.
Рис. 12. Отображение данных в виде списка
Особенности разработки
интерфейса пользователя на Excel 2007
На
рис 13 представлена книга со списком сотрудников, созданная в Excel 2007, на которой расположены элементы управления для
автоматизации работы пользователя.
Рис. 13. Отображение панели инструментов для Excel 2007 с размещённой таблицей и элементами управления
Для того чтобы разместить
элементы управления на листе Excel 2007,
необходимо открыть вкладку Разработчик,
нажать на кнопку — Режим
конструктора, а затем открыть панель с элементами ActiveX (панель инструментов с наименованием «Элементы
управления формы» используется при работе с макросами). Изменение свойств
элементов управления, которые размещены на листе Excel, осуществляется нажатием на пиктограмму ,
после выделения элемента на листе. Разработка программных кодов для поддержки
работы интерфейса пользователя ничем не отличается от технологии, которая была
описана в разделе выше (можно смело скопировать программные коды с рис 10 и рис
11 в окно Code Visual Basic),
если работа ведётся в версии Excel 2007 и
выше.
Можно
посмотреть пример для Excel
2007.
Передача данных из Excel в текстовые файлы
Данные, которые собирают или
создают в Excel, часто требуется
использовать в других приложениях. Возникает задача автоматизации формирования массивов
с данными таким образом, чтобы сотрудник не использовал ручные операции для
открытия книги Excel, поиска и отбора необходимых
данных, их копирования и размещения в собственном приложении. Использование VBA делает
возможным после обработки данных в Excel
одним щелчком мыши сформировать выходной файл для других пользователей.
Воспользуемся уже готовым приложением Excel, в
котором сформирована таблица с данными о сотрудниках (Form1.xls), добавим в неё столбец «Дата приёма». После
заполнения столбца данными (в примере это год приёма на работу), сохраним
документ под именем Form3. Предположим, отделу охраны
потребуются сведения о сотрудниках организации, чтобы подготовить им новые
пропуска. Совершенно очевидно, что, во-первых, отдел кадров не должен
передавать все сведения о сотрудниках, во-вторых, отдел охраны должен готовить
пропуска только тем сотрудникам, у которых они закончили срок действия или для
вновь принятых сотрудников. Следовательно,
инициатором формирования списков на выдачу пропусков сотрудникам
является отдел кадров, который ведёт учёт движения кадров, в соответствии с
приказами по организации. Поэтому, для формирования списка сотрудников на
выдачу пропусков в отделе кадров должны провести отбор кандидатур из общего
списка, который оформляется в виде отдельного файла и направляется на сервер.
Решение поставленной задачи
осуществим средствами Excel. Алгоритм
формирования файла из таблицы Excel состоит из
ряда последовательных действий, которые включают:
—
просмотр списка фамилий сотрудников предприятия;
—
выбор из списка фамилий и других данных, кому потребуются пропуска;
—
формирование файла с данными и отправка его отделу охраны предприятия.
Подготовим интерфейс для работы
сотрудника отдела кадров с приложением Excel, внешний вид заготовки представлен на рис 14.
Рис. 14. Интерфейс пользователя для подготовки файла с
данными
В качестве нового элемента
управления, который появился на листе Excel,
выбран: — Поле
со списком (ComboBox). Этот элемент управления
обладает дополнительными свойствами по сравнению с элементом Список (ListBox). Например, можно сделать раскрывающийся список или, непосредственно,
в окне отобразить сведения о его состоянии (чем мы и воспользуемся).
Разработку программы
целесообразно начать последовательно для каждого элемента. Чтобы не путаться
примем в качестве соглашение – имена объектов на листе (элементов управления)
оставим такими, какие им присваивает система. Первое событие, которое должен
осуществить сотрудник при работе с данным приложением – указать условия отбора
данных из таблицы со сведениями о персонах. Для этого необходимо нажать на
кнопку с наименованием «Ввести условия отбора», по заданному условию в элементе
Поле со списком должны отобразиться
данные о сотрудниках. Поэтому, требуется организовать диалог пользователя с
приложением, для этого воспользуемся стандартным диалоговым окном на основе
функции InputBox(). Программные коды для обработки события Click по
кнопке представлены на рис 15.
Рис. 15. Программа для обработки события — нажать на
кнопку «Ввести условие отбора»
Следует напомнить, что в
программах используют переменные, зона действий которых распространяется
по-разному. Чтобы переменная была доступной в пределах приложения для всех
процедур, тогда её необходимо объявить в общей области, если нет необходимости
использовать имя переменной во всех процедурах, тогда её объявляют внутри
процедуры или внутри оператора. При рассмотрении данной задачи, на это будет
обращено внимание. Для отбора сведений из таблицы Excel по заданному
критерию необходимо сформировать промежуточные массивы, в которых будут
находиться данные, предназначенные для записи в файл. Массивы будут создаваться
в процедуре отбора данных из таблицы, а использоваться в процедуре записи
данных в файл, поэтому оператор: Dim M1(20), M2(20), M3(20), M4(20) As String,
создан раньше объявления всех процедур. По той же причине объявление переменной Dim k As Integer для подсчёта
количества отобранных записей вынесено в начало программы. Обратите внимание,
что оператор Dim i As Integer находится внутри процедуры, т.к. действие переменной i распространяется только при просмотре ячеек таблицы.
Операторы, позволяющие осуществлять удаление данных из поля со списком и из
заголовка списка, используются для того, чтобы пользователь мог несколько раз
менять своё решение при вводе критерия отбора, не выполняя при этом
дополнительных действий. Организация диалогового окна осуществляется функцией InputBox(), у которой задаются аргументы, а результаты ввода
сохраняются в переменной y. Рассмотрим несколько подробнее содержимое функции InputBox().
y = InputBox(«Введите год, ниже
которого будут отобраны сведения из таблицы», _
«Вы указываете критерии отбора»)
Диалоговое
окно для ввода критерия отбора данных из таблицы представлено на рис 16, у
которого есть поле для заголовка, тело для отображения инструкций, указаний и
т.п., а так же есть текстовое окно для ввода данных. При нажатии на кнопку ОК
на диалоговом окне, значение из текстового окна передаётся переменной y. Если
пользователь нажмёт на кнопку Cancel, то будет
сгенерирован код конца работы, который передаётся переменной y, обычно
программисты это учитывают и создают программные коды, которые анализируют,
какую кнопку нажал пользователь. В рассматриваемом примере оператор If y
<> «» Then проверяет наличие любого кода, введённого в
текстовую строку. В том случае, если нажата кнопка Cancel, то код будет пустым, после этого оператора ни одна
инструкция в программе не будет выполнена (завершение проверки условия End If стоит в самом конце процедуры).
Рис. 16. Диалоговое окно для ввода критерия отбора
данных из таблицы
Далее, в процедуре по отбору
данных встречается конструкция While … Wend, которая была описана в предыдущем примере. Внутри
этой конструкции встроен условный оператор If … Then … Else. Условием является сравнение текущего значения в
ячейках с датой поступления сотрудников на работу с критерием отбора. Так как в
ячейках находятся данные в числовом формате, а критерий отбора введён в
текстовом виде, то использована функция Int(), с помощью которой текстовые данные преобразуются в
целые числа (заметим, что аргументы функции всегда заключены в круглые скобки).
При выполнении заданного условия (“<=”) осуществляется сохранение данных в массивах (Фамилия, Имя,
Отчество, Должность) и идёт заполнение строк элемента управления —Поле со списком. По окончанию просмотра
ячеек таблицы со сведениями о годе поступления на работу, осуществляется замена
текста в заголовке элемента – Поле со
списком. На рис 17 показан результат отбора записей при заданном критерии
отбора (в диалоговом окне указан 2008 год).
Рис. 17. Пример отбора данных по заданному критерию
Передача, отобранных сведений из
таблицы, осуществляется после того, как пользователь нажмёт на кнопку
«Подготовить файл». В этом случае будет запущена процедура, текст которой
представлен на рис 18.
Рис. 18. Программные коды процедуры — запись данных в
файл
Самым простым способом создавать
файл является — указать полный путь к файлу в программе, хотя есть и другие
способы, о которых будет сказано ниже. В данном примере рассмотрим, как
работает оператор Open. Для создания файла
необходимо задать путь к файлу: «C:Prim—vbaSved.txt«, режим
— For Output
(открыть файл для записи), и задать указатель файла — As #1
(цифра может быть любой). Если файла с указанным именем нет, то он будет
создан, если такое имя существует, то запись начнётся с начала, а все
предыдущие записи будут удалены. Путь к файлу C:Prim—vba — содержит: имя диска, и наименования папок. В том
случае, если наименований указанных папок не существует, то система даст сообщение
об ошибке. Завершение записи осуществляется операцией закрытия (добавление
специального символа в конец файла) с помощью оператора Close #1. В данном примере, необходимо содержание массивов
с данными передать в файл, для чего использована конструкция For … Next.
В операторе Write #1,
M1(j); M2(j); M3(j); M4(j) даётся ссылка
на указатель файла и после запятой указывается список переменных, отделяемых
друг от друга знаком разделителя (в данном примере знаком разделителя данных
является – точка с запятой «;»). Результаты созданного файла с оператором Write показаны
на рис 19. Вместо оператора Write можно
использовать оператор Print, тогда
знак разделителя не будет отображаться.
Рис. 19. Отображение в приложении Блокнот, записанных
сведений в файл
Пользователь получает на экране
компьютера подтверждение (рис 20), которое создано с помощью функции MsgBox(). Обратите внимание, что при задании в функции
аргумента – vbInformation, на диалоговом окне отображается только одна кнопка и
символ информация.
Рис. 20. Сообщение пользователю о завершении записи
данных в файл
Процедура очистки окон
запускается нажатием на кнопку «Очистить список», как она создавалась описание
дано в предыдущем примере.
Посмотрите
работу примера в Excel
2003
Посмотрите
работу примера в Excel
2007
Использование файлов с
данными для работы в Excel
Созданный
файл со списком сотрудников удобно использовать для работы различных
подразделений. Предположим, что отдел охраны просматривает на сервере вновь
поступившие файлы для выполнения функции – подготовка пропусков сотрудникам
организации. Попробуем упростить работу сотрудника отдела охраны, для чего
рассмотрим два варианта работы со списком, который находится в отдельном файле.
Для достижения, поставленной цели, необходимо создать шаблон выходного
документа – это образец пропуска на работу, а так же необходим интерфейс на
листе Excel, с помощью которого можно отобрать данные и заполнить
бланк пропуска. Откроем новую книгу в Excel
2003 (попутно покажем, какие различия встретятся при работе с Excel 2007). В новой книге создадим шаблон для типового
пропуска, который после заполнения будет распечатывать сотрудник отдела охраны.
Назовём лист «Пропуск», а шаблон будет выглядеть, как показано на рис 21.
Рис. 21. Лист Excel с заготовкой для вывода данных
Рамка обозначает внешний вид
документа (Пропуск), внутри рамки обведены ячейки, которые залиты одним цветом.
На документе размешены его атрибуты (рисунок в виде флага; название
организации; заголовок документа
«Пропуск»; реквизиты документа фамилия, имя, отчество, должность).
Ячейки B3:G3 объединены ,
в которых записано название организации, в строке 4 крупным шрифтом написано
слово «ПРОПУСК», в ячейке B8 – Должность и
т.д. (все ячейки, которые использованы для шаблона на рис 21 выделены другим
цветом). В ячейке С10 изменён формат представления данных с Общего на формат Дата, обратите внимание, что в эту ячейку вставлена формула:
=СЕГОДНЯ(). Варианты автоматизации получения пропуска для сотрудника с
заполненными данными, отличаются друг от друга интерфейсом, который расположен
на листе с наименованием «Список».
Вариант 1. Импорт текстовых данных на
лист Excel
Список
сотрудников из файла поместим на листе Excel с наименованием «Список», для чего откроем в строке Меню→ Данные→ Импорт внешних
данных→ Импортировать данные, как показано на рис 22.
Рис. 22. Подготовительные действия для импорта таблицы
из файла
При импорте внешних данных на
лист Excel, сначала следует найти местоположение файла (с
помощью окна – Импорт текстового файла),
а затем провести три последовательных шага в приложении – Мастер текстов.
Для тех, кто работает с Excel 2007, необходимо в Меню раскрыть вкладку Данные,
чтобы обратиться к списку команд группы – Получить
внешние данные. На рис 23 выделена пиктограмма – Из текста, которая запускает диалоговое окно для поиска файла и Мастер текстов, при работе с этими
диалоговыми окнами, все последующие действия при импорте текстового файла будут
аналогичны, как в Excel 2003.
Рис. 23. Импортирование внешних данных, созданных в
виде текста
Приложение Мастер текстов преобразует строки в отдельные записи (создаёт
списки), поэтому при выполнении второго шага, следует указать, что является
символом-разделителем в файле. На рис 24 показано окно Мастер текстов, в котором отмечен символ-разделитель – запятая.
Рис. 24. Пример преобразования строк текста в
табличные данные с помощью приложения Мастер
текстов
Теперь следует позаботиться, чтобы данные о сотруднике
с листа «Список» попали на лист «Пропуск». Передача сведений о сотруднике,
которые предварительно выделяют в списке, будет осуществляться после нажатия на
кнопку с наименованием «Подготовить пропуск» на листе с наименованием «Список»,
как показано на рис 25.
Рис. 25. Пример импортированного списка на лист Excel для
подготовки пропуска сотруднице Вавиловой
Так как на листе Excel размещена
одна кнопка, то только для неё создаётся программный код, представленный на рис
26. Рассмотрим некоторые особенности программы, с помощью которой создаётся
диалоговое окно для ввода диапазона ячеек со сведениями о сотруднике, а затем
эти сведения передаются на лист «Пропуск» в шаблон.
Воспользуемся возможностями
объекта Application, который обладает обширной коллекцией свойств,
позволяет программно установить значения многих опций для объектов, которые
используются в программе VBA (подробно об
объекте Application можно
ознакомиться в литературе, например, [1]). В данной программе используем
функцию InputBox() в качестве диалогового окна для сбора параметров о
сотруднике. Поэтому, сначала дадим описание параметров этого окна в операторе Set (Установить), запись будет выглядеть следующим
образом:
Set input_sveden = Application.InputBox( _
Title:=»Найдите необходимую ячейку», _
Prompt:=»Выделите в таблице ячейки в строке,»
& Chr(13) _
& «которые
относятся к сотруднику», _
Type:=8)
Зададим имя переменной — input_sveden, которой
будут передаваться сведения из текстовой строки диалогового окна. Application.InputBox — это новый объект (на основе функции InputBox). Объекту следует задать параметры, которые являются
атрибутами функции, к которым относятся:
Title – строковое выражение, отображаемое в строке
заголовка диалогового окна;
Prompt –
строковое выражение, отображаемое как сообщение в диалоговом окне;
Type – параметр, указывающий что должно отображаться в текстовом
окне (код 8 – адрес выделяемой ячейки на листе).
Рис. 26. Программные коды для обработки выделенной
строки после свершения события Click
при передаче в шаблон документа
Для того, чтобы осуществить
работу с выделенными ячейками на листе, необходимо выяснить их количество
(количество столбцов и количество строк), что осуществляется операторами:
Num_col = input_sveden.Columns.Count
Num_row = input_sveden.Rows.Count
Операторы цикла осуществляют просмотр содержимого
переменной input_sveden с последующей записью в индексированный массив
Mas(i), далее формируется общая строка FIO, содержащая фамилию имя и отчество сотрудника. Для создания сообщения о выполнении работы использован
оператор MsgBox (обратите внимание, в
операторе не используются круглые скобки). Но вместе с тем, в этот оператор
встроена функция Chr(13), которая воспринимает код 13, как возврат каретки и
перевод курсора на новую строку, что позволяет в диалоговом окне сообщение
делить на несколько строк. Пример результатов выполнения запроса показан на рис
27.
Рис. 27. Пример использования оператора MsgBox для формирования
сообщения в виде диалогового окна
Сохранив значения в переменных FIO и Mas(4) для заполнения пропуска (так можно собрать из
таблицы большое количество данных, а в нашем примере показано, как выбирать
данные и объединять в одну строку), осталось их передать на другой лист, что
выполняется с помощью следующих кодов:
Worksheets(«Пропуск«).Cells(6, 2) = FIO
Worksheets(«Пропуск«).Cells(8, 3) = Mas(4)
Посмотрите
пример работы программы для Excel
Пример,
который работает только в Excel 2007 и
выше
Вариант 2. Использование данных
непосредственно из файла.
Можно создать интерфейс для пользователя на листе Excel, для того, чтобы (в данном примере) сотрудник отдела
охраны, имел возможность выбирать файл, отбирать необходимые сведения,
распечатывать бланк пропуска с готовыми данными. Создадим новую книгу Excel, присвоим ей имя – Form5. Первый лист книги назовём «Сотрудники», а второй
лист с наименованием «Пропуск» скопируем из предыдущего примера. На листе
«Сотрудники» расположим необходимые элементы управления как показано на рис 28.
Рис. 28. Проект интерфейса пользователя на листе Excel
Для осуществления операции просмотра файлов введём
новый элемент управления, на панели инструментов пиктограммой — Другие
элементы, После нажатия на эту пиктограмму, откроется список, из которого
выберем — Common Dialog (Общий диалог). Класс объектов
управления Общий диалог позволяет открыть в работающем приложении одну из
стандартных диалоговых панелей, например, Открытие файла (File Open), Сохранение
файла (File Save As), Выбор шрифта (Select Font) и
другие, как показано на рис 29 выделяют название элемента, а затем нажимают на
кнопку ОК.
Рис. 29. Выбор дополнительного объекта в разделе Windows –
Другие элементы
Пиктограмма — Общий
диалог появится на листе Excel, после
чего необходимо установить свойства элемента. В данном примере, свойству Name (Имя)
присвоим – CD1. Напомним, что элементы
управления, которые относятся к интерфейсу пользователя, по умолчанию имеют заданные свойства, изменим
некоторые свойства, которые перечислены в таблице 2.
Таблица 2. Наименования элементов управления и их
свойства в программе
Наименование элемента |
Свойство |
Значение |
CommandButton1 |
Name |
CB1 |
Caption |
Посмотреть файлы |
|
Label1 |
Caption |
Для выбора фамилии из |
ListBox1 |
Name |
LB1 |
CommandButton2 |
Name |
CB2 |
Caption |
Подготовить пропуск |
|
Label2 |
Caption |
Вы выбрали фамилию, можете |
Label3 |
Name |
LL2 |
Caption |
«Пусто» |
Интерфейс пользователя включает
две кнопки. Первая кнопка с наименованием «Посмотреть файлы» должна обеспечить пользователя
поисковым средством для выбора файла (где бы он не находился), отобразить
фамилии сотрудников в виде списка на экране в объекте с именем LB1. Программа обработки события, представлена на рис
30.
Рис. 30. Программа обработки события при нажатии на
кнопку с наименованием «Поиск файлов»
Обратите внимание, что в общую
область вынесено два оператора Dim, для
описания переменных, которые будут использованы во всех процедурах. В то время
как переменные Puti и k
используются только в процедуре CB1_Click(). В
предыдущих примерах было дано подробное описание работы с оператором If … else … end и функцией MsgBox(),
поэтому покажем новые элементы программы. Так, запись CD1.ShowOpen, есть не что
иное, как открытие диалогового окна для поиска файлов. Метод ShowOpen позволяет
запустить диалоговое окно в режиме поиска файлов, как показано на рис 31.
Рис. 31. Диалоговое окно для поиска файлов
Путь к файлу (перечень устройств
и папок), а так же имя файла сохраняются в переменной: Puti = CD1.Filename, где
CD1 – имя объекта Общий
диалог, а Filename – свойство, которому передаётся путь к файлу.
Оператор
Open Puti For Input As #2
указывает, что необходимо открыть содержимое файла, находящегося по адресу Puti.
Новый
приём создания цикла основан на конструкции While … Wend. Внутри
цикла необходимо заполнить строки поля со списком (его имя LB1), и передать все значения о сотрудниках в массивы.
При просмотре файла, неизвестно, сколько находится записей в нём, поэтому, в
операторе начала цикла в качестве условия стоит признак конца файла – EOF (End of File).
Когда условие выполнится, произойдёт выход из цикла.
Следующее действие, которое
должен совершить пользователь, это отметить в списке фамилию и нажать на кнопку
«Подготовить список» (можно упростить задачу, ликвидировать эту кнопку, а
обрабатывать событие щелчка мышью в строке списка). Для обработки события –
щелчок мыши, программа будет выглядеть, как показано на рис 32.
Рис. 32. Программа формирования документа на листе
«Пропуск»
Особенностью программы является
то, что в ней используется определение индекса выделенной строки в поле со
списком оператором:
j
= LB1.ListIndex переменная j используется
для получения данных из массивов. Результаты работы пользователя представлены
на рис 33.
Рис. 33. Результаты работы с интерфейсом на листе Excel
Посмотрите
пример в Excel
Пример,
который работает только в Excel
2007 и выше
Раздел 3. Макросы в Excel
Направления
использования макросов
При автоматизации работ с часто повторяющимися
действиями, процесс их выполнения осуществляется с помощью макросов. Макрос (macro) – это последовательность команд, которые написаны на
VBA и
которые хранятся в стандартном модуле среды разработки VBA приложений.
Макросы могут осуществлять широкий спектр задач от простых вычислений до
создания пользовательского интерфейса вашего приложения. Выделяются три
основные разновидности макросов [3]:
Ø Командные – основными предназначениями, которых
является выполнение действий, аналогично командам меню.
Ø Пользовательские функции – работают аналогично
встроенным функциям Excel. Особенностью
пользовательских функций в том, что они используют значения передаваемых им
аргументов, производят некоторые вычисления и возвращают результат в точку
вызова, но не изменяют среды приложения.
Ø Макрофункции – представляют собой сочетание командных
макросов и пользовательских функций. Если необходимо в различных макросах
выполнять ряд одинаковых действий, то эти действия обычно выделяются в
отдельную макрофункцию (подпрограмму). Фактически создаются предпосылки для
организации модульного программирования в среде VBA.
Корпорация Microsoft
разработала и внедрила в приложения MS Windows специальную программу, которую назвали – Макрорекордер.
С его помощью осуществляется формирования программного кода, который
оформляется в виде отдельного модуля. Суть работы макрорекордера заключается в
следующем:
§ Пользователь запускает программу – Начать запись (в дальнейшем –
программа).
§ Программа перехватывает события, которые вызывает
пользователь (выделение ячеек на листе, нажатие в строке меню на строку с
указанием программы, например, копировать) и преобразует эти события в
стандартные команды и операторы на языке VBA.
§ Пользователь завершает создание макроса – Остановить запись.
§ Программа формирует модуль, имя которому присваивает
пользователь.
Необходимо отметить, что модуль относится к открытой
книге Excel, в которой создавался макрос, хотя его можно скопировать
и перенести в другую книгу.
Создание макросов
Прежде
чем запустить макрорекордер для создания макроса, надо тщательно спланировать
ваши действия. Чтобы освоить порядок работы, создадим интерфейс пользователя в
виде командного макроса. Например, созданный список сотрудников (пример 1 – Form1.xls) необходимо
скопировать в новую книгу Excel и
сохранить её в определённой папке. Для выполнения данной работы потребуются
типовые команды, которые нет смысла самому писать на VBA, пусть это сделает макрорекордер.
Для активизации макрорекордера в
Excel 2003 в строке Меню→ Сервис→Макрос→
Начать запись, как показано на рис 34.
Рис. 34. Порядок запуска макрорекордера через строку
Меню
Тот, кто работает с Excel 2007
и выше, следует в строке меню открыть вкладку Вид, а затем раскрыть пиктограмму
Макросы, чтобы выбрать команду Запись макроса, как показано на рис 35.
Рис. 35. Последовательность доступа к команде Запись
макроса
После того, как будет выполнена
команда Запись макроса, на экране
появится окно с одноимённым названием, которое показано на рис 36.
Рис. 36. Окно для записи параметров макроса
В диалоговом окне Имя макроса предлагает система, можно
дать ему любое имя, например, Копия_списка.
Обратите внимание, что в именах не должно быть пробелов. Поле Сочетание клавиш состоит из обязательной
клавиши Ctrl и той, которую назначает пользователь (можно не
назначать). Система предлагает сохранить
макрос в различных вариантах, выбираем – Эта
книга.
Поле
Описание макроса заполняется
пользователем в текстовом окне.
После того, как будет нажата кнопка ОК в окне Запись макроса, макрорекордер начнёт
отслеживать действия пользователя и создавать программу на VBA. Алгоритм действий понятен, состоит из следующих
этапов: открыть имеющийся файл с данными; выделить область ячеек, которые
следует скопировать; выбрать из меню команду копировать; открыть новую книгу Excel; дать команду вставить на лист содержимое буфера
обмена; сохранить новую книгу в виде файла; закрыть этот файл. Завершение
работы макрорекордера осуществляется командой ,
которая находится в группе команд Макрос.
Посмотрите, как работает созданный макрос,
который можно запустить сочетанием клавиш Ctrl+a.
Работа с макросом
Созданный макрос «Копия_списка»
сохраняется в виде отдельного модуля в книге файла Form1.xls. Для того,
чтобы посмотреть содержимое программы на VBA или запустить макрос, достаточно открыть диалоговое
окно, нажав на команду в меню ,
представленное на рис 37.
Рис. 37. Диалоговое окно Макрос с вариантами работы с
макросом
Кнопка
предназначена для запуска, выбранного из
списка макроса (в данном примере всего один макрос).
Кнопка
предназначена для просмотра текста макроса в
редакторе и исправления необходимых параметров (прежде чем начать
редактирование кодов, следует запустить режим конструктора). Для рассматриваемого
примера, программные коды макроса показаны на рис 38.
Рис. 38. Программные коды макроса
Кнопка
позволяет открыть режим редактирования
программных кодов, аналогично кнопке «Войти», но сразу входит в режим
конструктора.
Кнопка
находится в неактивном состоянии, для того
чтобы её активизировать, необходимо перейти в режим работы с формой.
Кнопка
позволяет из имеющегося списка макросов
удалить тот, который будет выделен.
Кнопка
запускает диалоговое окно Параметры макроса,
которое показано на рис 39.
Организовать командные функции с помощью макроса
довольно просто, но, как можно заметить существуют некоторые неудобства.
Во-первых, макрос это статичная программа, например, если исходный список будет
расширен, то запуск макроса приведёт к тому, что копироваться будут ячейки
таблицы, которые были заданы диапазоном при записи макроса. Во-вторых, путь к
файлу, который должен быть создан, задаётся в абсолютном виде, следовательно,
всегда следует соблюдать порядок перечня устройств и папок, которые записаны в
макросе. В-третьих, запуск макроса осуществляется самим пользователем либо с
помощью сочетания клавиш, либо через меню. Указанные недостатки, можно обойти
путём введения на лист Excel
элементов управления, которые находятся
на панели инструментов Формы.
Рис. 39. Диалоговое окно для изменения параметров уже
созданного макроса
Использование панели
инструментов Формы при создании макросов
Панель
инструментов Формы содержит в своём составе элементы управления, к которым
можно «привязаться» с помощью макрорекордера. Для открытия указанной панели
инструментов в Excel 2003, следует в строке Меню→Вид→Панели
инструментов→Формы, внешний вид которой показан на рис 40.
Рис. 40. Панель инструментов Формы
Тот, кто использует Excel 2007, панель инструментов Формы может найти через
открытие вкладки Разработчик→ Вставить (режим конструктора не активизировать),
как показано на рис 41.
Рис. 41. Элементы управления формы
Попробуем решить задачу, которую
сформулируем следующим образом: создать интерфейс пользователя в новой книге с
элементами управления, которые позволяют просматривать список фамилий
сотрудников из книги с именем Form1. Алгоритм
создания такого макроса заключается в открытии файла с исходными данными,
выделении в таблице столбца с фамилиями, копировании и размещении этих фамилий
в окне со списком. Покажем, как будет создаваться макрос для поставленной
задачи.
- Откроем файл с
исходными данными под именем Forma1.xls. - Создадим новую книгу
в Excel, сохраним её под именем Form6.xls. - Откроем панель
инструментов Формы для файла Form6.xls. - Поместим на листе с
наименованием «Просмотр списка» элемент управления — список. - Запустим команду для записи макроса, в окне Запись макроса присвоим имя макросу
– Получить_список. - Сделаем щелчок
правой клавишей мыши по элементу Список, в открывшемся окне выберем строку
с наименованием «Формат объекта». - В открывшемся окне,
которое показано на рис 42, под названием Форматирование объекта на вкладке Элемент управления необходимо щёлкнуть по значку — Формировать список по диапазону, а
затем в книге под именем Form1
выделить столбец с фамилиями. - Закрыть окно Форматирование объекта кнопкой ОК.
После выполнения пункта 8 список будет заполнен
фамилиями, которые получены с листа под наименованием «Кадры» из книги – Form1.
Рис. 42. Окно для форматирования объекта – Список
Закройте эту форму, сохраните книгу Form6 и тоже закройте. Можете убедиться, что макрос
заполнения списка создан, программа которого представлена на рис 43.
Рис. 43. Программа макроса для заполнения объекта Список данными
Теперь
попробуйте открыть файл Form6.xls, к сожалению, в открытой книге будет только элемент
управления Список совершенно чистый,
хотя, макрос был создан. Причина такого результата кроется в том, что источника
информации нет (книга со списком сотрудников закрыта). Создадим ещё один
макрос, обращение к которому, позволяет открыть книгу с именем Form1. В книге Form6
дадим команду для макроса – Начать запись,
откроем файл Form1.xls, дадим команду – Остановить
запись. Таким образом, создан второй модуль, программа которого показана на
рис 44.
Рис. 44. Программный код макроса для открытия файла Form1.xls
Таким образом, создано два
модуля с программами, которые необходимо объединить. Это делается с помощью
командной кнопки, которую разместим на листе книги Form6. Используем панель элементов Формы, на которой выбираем элемент — кнопка, располагаем его на листе.
Для
такого элемента система открывает диалоговое окно — Назначить макрос объекту, которое представлено на рис 45. В том
случае, если макрос ещё не готов, то нажмите на кнопку «Отмена» в окне
«Назначить макрос объекту». Когда понадобится выполнить операцию привязки
макроса к кнопке, тогда щёлкните правой клавишей мыши по объекту, а затем в
открывшемся списке выберите необходимую строку с наименованием команды, как это
показано на рис 46.
Обратите внимание, что панель инструментов Формы самостоятельно создаёт процедуры
для обработки событий, не требует перехода в режим конструктора, но вместе с
тем, имеет ограниченные возможности для изменения свойств объектов.
Рис. 45. Диалоговое окно назначения макроса объекту
кнопка
Рис. 46. Пример использования всплывающего меню для
работы с объектом
Посмотрите работу
примера в Excel 2003
Этот
вариант будет работать только в Excel
2007 и выше
Раздел 4.
Пользовательские функции в VBA
Создание
пользовательских функций
Пользовательские
функции оформляются в виде отдельных модулей, используются для организации
вычислений, решения аналитических задач, создания гистограмм и графических образов
на листе Excel. Каждый модуль представляет
собой законченный процесс обработки информации, часто модули используют
неоднократно в различных областях приложения. Отличительной особенностью
пользовательской функции является то, что в ней изменяются параметры, в
зависимости от условий текущего момента, что делает приложение и интерфейс
более универсальными. В предыдущих разделах было показано, как составлять
программы с помощью редактора VBA и макрорекордера при написании макросов. Следует
заметить, что внимательный просмотр кодов для макросов во многом упрощает
изучение приёмов программирования на VBA.
Напомним, что Excel обладает собственными объектами, такими, как книга,
листы, ячейки, области, поэтому, при написании программы приходится
использовать их имена, а так же менять им свойства, поэтому, легче всего
написать простейший макрос, а затем коды перенести в программу, которая и
называется пользовательской функцией. Любое приложение, которое создаётся на VBA, программируется по заданному алгоритму. Разработке
алгоритма предшествует постановка задачи. Очень часто задачу ставят в общем
виде, когда указывают цель, а затем разделяют (декомпозируют) её на отдельные
элементы, состоящие из одного или нескольких модулей. Связывание модулей
осуществляется с помощью элементов управления и событиями, которые они
вызывают.
Начало работы пользователя
осуществляется с открытия новой или уже существующей книги Excel. Для Excel 2003 при
обращении к макросам необходимо щёлкнуть по строке ,
после чего будет открыто окно редактора Visual Basic, в этом
окне существует строка меню, пиктограммы, которые отражают наиболее часто
используемые команды меню, окно для отображения объектов Excel (слева),
рабочее поле для просмотра кодов или элементов формы. На рис 47 отображено
открытая книга Excel и текстовый редактор Code.
Рис. 47. Книга Excel и редактор Visual Basic для создания модуля
В данном разделе будет
рассмотрена практическая задача, которая требует ввода данных, их
преобразования, проведение сложных вычислений, отображение результатов в
табличном виде и в форме диаграммы. Цель рассмотрения примера – ознакомиться с
встроенными функциями, организации работы с массивами, передачи данных на
другие листы, создание диалоговых окон и правила работы с условными
операторами.
Постановка задачи
Необходимо
создать приложение на Excel, которое позволяет
обрабатывать анкеты, полученные от экспертов, в которых эксперты оценивали
проекты (факторы, объекты) с помощью баллов. Конечной целью обработки данных
является получение консолидированного мнения совокупности экспертов по
распределению порядковых мест, оцениваемых проектов. Исследователь должен
получить аналитическую оценку согласованности мнений экспертов, чтобы принять
гипотезу о достоверности полученных результатов. В основу работы с бальными
оценками закладывается метод ранжирования объектов (проектов). Предположим, что
сбор мнений экспертов осуществляется в виде анкет, в которых просят установить
приоритеты среди проектов, причём, чем лучше (весомее, важнее) проект, тем балл
эксперт устанавливает более высокий. Интерфейс пользователя (того, кто
обрабатывает содержимое анкет) должен позволять вводить по строкам оценки
экспертов, получать окончательные результаты. Внешний вид приложения в Excel для обработки материалов из анкет экспертов методом
ранжирования (данные введены) представлен на рис 48.
Рис. 48. Интерфейс пользователя для обработки
материалов из анкет экспертов методом ранжирования
Проект приложения на Excel
На
рис 48 показано, что книга Excel
содержит три листа. На первом листе
расположены командные кнопки и поле для ввода данных из анкет экспертов. Кнопка
позволяет пользователю удалять ранее введённые
данные с листа под наименованием «данные». Эта кнопка создана с помощью панели
инструментов Visual Basic, в
дальнейшем будет сказано, почему так
поступили. Кнопка предназначена для запуска процедуры подготовки работы с данными, что
требует вывода на экран дополнительных диалоговых окон. Кнопка создана с
помощью панели инструментов Формы,
что позволяет процедуру обработки данных сохранить в виде отдельного модуля
(хотя, модуль можно создать и по-другому). Кнопка позволяет запускать процедуру преобразования
бальных оценок экспертов в ранги (порядковые места), вычислять коэффициент согласованности
мнений экспертов, который в статистике называют коэффициентом конкордации W [4], а так же построить диаграмму распределения мест
ранжируемых проектов (объектов). Отражение результатов работы модуля после
вызова процедуры «Расчёт» осуществляется на листах книги с наименованиями
«результаты» и «график». Кнопка создана с помощью панели инструментов Формы.
Посмотрите,
как работает приложение.
Описание процедур
обработки событий для приложения – «ранжирование объектов»
Процедура – Очистить
поле
Прежде,
чем заполнить таблицу, пользователь удаляет с листа под наименованием «данные»,
те числа, которые могут остаться после предыдущей работы. Для этого достаточно
нажать на кнопку «Очистить поле». В качестве примера, как можно использовать
макрос в программе обработки события при нажатии на кнопку, поступим следующим
образом. Создадим макрос с помощью макрорекордера, который назовём «Очистить».
Запустим макрорекордер, выделим на листе с именем «данные» область A7:P48, выполним
команду Delete (Удалить), откроем лист с именем «результаты», выделим
область A2:R26, всё удалим,
откроем лист с именем «график», удалим содержимое из области A2:R2, откроем лист
с именем «данные», установим указатель курсора в ячейку A7, остановим запись макрорекордера. В итоге,
программный код для удаления данных от предыдущих расчётов будет сформирован
(самим ничего писать не пришлось), который показан на рис 49. Может быть, это
не самый лучший вариант создания кода, т.к., на всякий случай, выделяли
избыточное количество ячеек на листах, но результат достигнут – получен макрос
(создан модуль). Тогда достаточно для кнопки написать всего один оператор: Call Очистить, где оператор Call (вызвать)
использует в качестве метода макрос под именем «Очистить».
Рис. 49. Программные коды макроса и процедуры
обработки события Click при нажатии на командную кнопку с наименованием
«Очистить поле»
Процедура по удалению данных со
всех листов книги Excel работает автономно, это сделано специально.
Пользователь должен иметь возможность неоднократно проводить расчёты с уже
введёнными данными, расширять количество столбцов и количество строк в исходной
таблице или вносить изменения в некоторых ячейках таблицы (часто это делают,
когда задаются вопросом «что будет, если?», т.е. исследователь начинает
изменять данные и просматривать новый вариант результатов).
Процедура — Подготовка
к вводу данных
Автор
не стремился создать универсальную программу для ввода данных на лист Excel. Это вызвано тем обстоятельством, что основной целью
разбора, используемых приёмов при составлении программы, демонстрация правил
работы с VBA и некоторых его возможностей. Процедура подготовки к
вводу данных представлен на рис 50.
Рис. 50. Программные коды процедуры подготовки к вводу
данных
В разрабатываемых процедурах, будут использоваться
переменные, которые содержат данные и сведения о количестве, рассматриваемых
проектов (количество заполненных столбцов), а так же сведения о количестве
экспертов, чьи мнения необходимо учесть при выполнении расчётов (количество
строк в таблице), это целые числа. Матрица с оценками должна храниться в виде
массива. Поэтому, введены операторы Global для описания указанных
переменных, действие которых распространяется на все процедуры.
Ещё один приём создания объекта
в виде диалогового окна в программе на VBA отображён программными кодами (рис 50):
ThisWorkbook.Sheets(«данные»).Activate
u = InputBox(«ВВЕДИТЕ К-ВО
ПРОЕКТОВ», «ВВОД ПАРАМЕТРОВ»)
u1 = InputBox(«ВВЕДИТЕ К-ВО
ЭКСПЕРТОВ», «ВВОД ПАРАМЕТРОВ»)
Где, ключевое слово This указывает, что на листе с именем «данные» формируются
диалоговые окна для ввода данных.
Оператор: If u = «» Or u1 = «» Then проверяет
одновременно содержимое введённых пользователем данных в диалоговые окна, в
случае, если пользователь не заполнит одно из окон, программа даст сообщение с
помощью оператора MsgBox. Для задания имени листа, с
которым необходимо работать, в программе требуется указать оператор With
(совместно с), который заканчивается
оператором End With. Внутри
этой конструкции можно вставлять любые операторы и функции, которые будут
участвовать в обработке данных на указанном листе книги. Как видите, для
каждого листа осуществляется очистка рабочего диапазона ячеек методом Clear (очистить). Обратите внимание, что в каждом цикле (их
три) используется переменная i, действие которой распространяется только на момент
работы оператора цикла.
Процедура
выполнения расчётов
Для того, чтобы заменить бальные
оценки экспертов на ранги, необходимо выполнить несколько последовательных
действий, которые выделены в отдельные блоки в программе.
Первый блок (рис 51) предназначен для считывания с
листа под наименованием «данные» введённые баллы по проектам от каждого
эксперта. Вначале объявляются переменные оператором Dim, которые участвуют в различных блоках программ.
Переменные a() и b() являются массивами для хранения бальных оценок от
эксперта и преобразованные в дальнейшем в ранги. Обратите внимание, что
оператор .Cells(i + 6, 1) = i начинается
с точки, в котором ячейке с заданными параметрами (номер строки и номер
столбца) на листе с наименованием «данные» присваивается порядковый номер
эксперта, что отображается на листе в ячейках, начиная с ячейки A7 и ниже. Точка перед методом Cells ставится без
указания имени книги и листа, что было назначено в операторе With Worksheets(«данные»).
Рис. 51. Программные коды для обработки строки с
введёнными баллами от одного эксперта
Второй блок (рис 52)
предназначен для выяснения величин баллов в просматриваемой строке оценок,
которые присвоил эксперт, рассматриваемым проектам. В массиве o3() создаём просто номера с 1 до n, где n – число
проектов, которые оценивал каждый эксперт. При нахождении максимального числа
баллов в строке (цикл просмотра строки ниже), осуществляется хранение в
переменной f — максимального числа,
а в переменной j1 — порядкового
номера в строке.
Рис. 52. Выбор наибольшего балла в строке оценок
Третий блок (рис 53)
предназначен для преобразования баллов в ранги. Преобразование бальных оценок в
ранги (порядковые места) несколько позволяет независимо от выбранной шкалы
экспертами для оценки проектов, свести все мнения экспертов к единой порядковой
шкале. Комментарии, которые находятся на рис 53, созданы для того, чтобы
просматривался алгоритм перехода от одной шкалы измерения к другой. Основой
этого алгоритма является – работа с массивами данных, поэтому для этой цели
использована конструкция оператора For … Next.
Четвёртый блок (рис 54)
предназначен для записи рангов (порядковых мест, которые были получены после
преобразования баллов) на лист с наименованием «результаты». Обратите внимание,
что в первом блоке обработка введённых данных осуществлялась по строкам,
поэтому, в четвёртом блоке результаты передаются на лист с наименованием
«результаты» тоже по строкам. Но, необходимо было обработать все строки, для
этой цели, в начале программы был введён оператор For ij = 1 To m, действие которого заканчивается в четвёртом блоке
оператором Next ij.
Рис. 53. Преобразование баллов в ранги
Рис. 54. Перенос оценок в виде порядковых мест на лист
с наименованием «результаты»
Пятый блок (рис 55) предназначен
для вычисления коэффициента конкордации (W) и для отображения результатов в виде гистограммы на
листе с наименованием «график». Коэффициент W вычисляется по
стандартной формуле [4], который очень полезен для анализа, полученных
результатов. Статистически доказано, что значимость коэффициента конкордации
зависит от числа рассматриваемых объектов (в данном примере под объектом
понимают проекты) и количества экспертов, которые принимали участие в
оценивании объектов. Используя соответствующие таблицы [5], можно сделать заключение
о приемлемости результатов (чем величина коэффициента конкордации ближе к
единице, тем лучше). Пользователь приложения может удалить из общего массива
оценки того эксперта, которые значительно отличаются от оценок большинства
экспертов, а затем снова провести расчеты, чтобы убедиться, что согласованность
мнений экспертов стала выше.
Рис. 55. Программные коды для отображения результатов
на листе с наименованием «график»
Наглядное представление
выполненных расчётов всегда помогает исследователю (пользователю программы)
принимать решение о том, на сколько, его удовлетворяют результаты. На листе с
наименованием «график» отображается гистограмма, которая содержит сведения о суммарных
количествах рангов по каждому, оцениваемому объекту (проекту). На рис 56 показан лист с наименованием «график».
Рис. 56. Результаты оценки семи проектов девятью
экспертами
Для
того чтобы построить диаграмму, используя язык VBA, потребуется воспользоваться методом Add Charts, указать ссылку на тот диапазон, на основе которого
строится диаграмма, задать тип диаграммы, ввести в свойства текстовые значения
наименования осей и названия диаграммы (как это делается при работе с мастером
диаграмм). Получится достаточно большое количество программных кодов. Можно всё
сделать гораздо проще, как это выполнено в данном примере. А именно, на листе с
наименованием «график» с помощью мастера построения диаграмм задан диапазон
ячеек с данными (в данном случае ограничились 15 ячейками второй строки листа,
в котором отображаются суммарные величины рангов по проектам), выбран вид
диаграммы и внесены описания осей. После заполнения данных на первом листе
приложения, диаграмма появится автоматически.
Если вы полностью ознакомились с алгоритмом проведения
расчётов коэффициента конкордации при вводе бальных оценок проектов от
нескольких экспертов, то можете
использовать приложение для собственных исследований.
Список литературы
1. Гарнаев А.Ю. Самоучитель VBA. – 2-е изд. Перераб. И допю – СПб.: БХВ-Петербург,
2004.
2. Джон Уокенбах. Microsoft Office Excel 2007.
Библия пользователя.: Пер. с англ. – М.:
ООО «И.Д. Вильямс», 2008.
3. Рудикова Л.В. Microsoft Excel для студентов. –Спб.:
БХВ-Петербург, 2007.
Практическая работа №15
Тема занятия: Создание макросов.
Цель занятия: Научиться создавать макросы с целью автоматизации постоянно выполняемых действий в MS Excel.
План занятия:
Безопасность макросов. Создание простейшего макроса. Решение задач с помощью макросов. Безопасность макросов.
Microsoft Excel обеспечивает защиту от вирусов, которые могут передаваться макросами. Если макросы используются совместно с другими пользователями, макросы могут быть снабжены цифровой подписью, так что пользователи могут проверить надежность источника макросов. Всякий раз при открытии книги, содержащей макросы, можно проверить источник макросов, прежде чем разрешить их.
Установим низкий уровень безопасности макросов для того чтобы использовать макросы могли не только мы но и другие пользователи которые впоследствии будут работать с нашей рабочей книгой.
- Создайте новую рабочую книгу. Лист1 переименуйте в
Простейшие макросы.
- Выполните
Сервис→Макрос→Безопасность
- В окне
Безопасность макросов
- Установите переключатель на
Низкий уровень безопасности.Создание простейшего макроса.
Запись макросов.
- Выполните
Сервис→Макрос→Начать запись
- В окне
Запись макроса
- Укажите имя макроса
Простейший1
- и нажмите
ОК.
- Выделите любой диапазон ячеек и залейте его синим цветом. Выполните
Сервис→Макрос→Остановить запись.
- Выполните
Сервис→Макрос→Начать запись
- В окне
Запись макроса
- Укажите имя макроса
Простейший2
- и нажмите
ОК.
- Отмените заливку синим цветом диапазона ячеек залитого вами ранее. Выполните
Сервис→Макрос→Остановить запись.
Выполнение макроса.
- Выполните
Сервис→Макрос→Макросы.
- В окне
Макросы
- Выберите макрос с именем
Простейший1
- нажмите
Выполнить.
Создание кнопки выполняющей макрос..
- Выполните
Вид→Панели инструментов→Формы.
- На панели инструментов
Формы
- Найдите элемент
Кнопка
- И добавьте его на рабочий лист. После переноса кнопки на лист появляется окно
Назначить макрос объекту.
- В этом окне из списка существующих макросов выберите макрос с именем
Простейший1
- И нажмите
ОК.
- Переименуйте кнопку в
Залить цветом.
Задание: Аналогичным образом создайте кнопку отменяющую заливку цветом. Кнопку назовите Отменить заливку.
Решение задач с помощью макросов.
Задача: С помощью средств электронной таблицы Excel необходимо оформить решение теоремы Пифагора. Нужно учесть тот факт, что человек может знать длину катета и гипотенузы и нужно вычислить второй катет, а может знать длины двух катетов и необходимо вычислить гипотенузу. Поэтому нужно сделать два переключателя (работающих с помощью макросов) которые будут менять формулу в зависимости от данных которые известны пользователю.
Решение:
Подготовка таблицы.
На данном этапе решения задачи, необходимо четко определить какие параметры будут оставаться неизменными при любом выполненном макросе, а какие будут меняться в зависимости от требований пользователя.
Вам предлагается следующий вариант исходной таблицы. Создайте такую же таблицу на листе Теорема Пифагора.
Запись макроса этап1.
На данном этапе мы запишем макрос позволяющий определять гипотенузу нашего прямоугольного треугольника по двум известным катетам.
- Выполните
Сервис→Макрос→Начать запись
- В окне
Запись макроса
- Укажите имя макроса
Решение1
- и нажмите
ОК.
Замечание: В имени макроса не должно существовать пробелов.
- В элемент
Стрелка№2
- впишите слово
Катет.
- В ячейку В13 впишите
Гипотенуза равна.
• В ячейку С13 введите следующую формулу =КОРЕНЬ(H4^2+H9^2). Нажмите Enter. Функция КОРЕНЬ используется не во всех версиях Office поэтому возможно ее необходимо будет заменить на функцию SQRT. КОРЕНЬ и SQRT возвращают значения квадратного корня.
- Выполните
Сервис→Макрос→Остановить запись.
Запись макроса этап2.
На данном этапе мы запишем макрос позволяющий определять гипотенузу нашего прямоугольного треугольника по гипотенузе и катету.
- Выполните
Сервис→Макрос→Начать запись
- В окне
Запись макроса
- Укажите имя макроса
Решение2
- и нажмите
ОК.
- В элемент
Стрелка№2
- впишите слово
Гипотенуза.
- В ячейку В13 впишите
Катет равен.
- В ячейку С13 введите следующую формулу
=КОРЕНЬ(H9^2-H4^2).
- Нажмите
Enter.
- Выполните
Сервис→Макрос→Остановить запись.
Задание: Создайте две кнопки которые будут запускать созданные нами макросы.
Ниже представлен конечный вариант решения данной задачи.
Контрольные вопросы:
Что такое макрос? Для чего целесообразно использовать макросы? Как начать запись макроса? Как остановить запись макроса? Как выполнить макрос? Как назначить макрос графическому объекту?
Вывод: В данной работе были рассмотрены основные способы создания и использования макросов. Выполнив данную работу можно сказать о том, что макросы удобно использовать в том случае, когда необходимо автоматизировать выполнение часто повторяемых задач в MS Excel.