ЛР1. Лабораторная работа Макросы Цель и задачи работы определение и понятие Макрос, сущность языка программирования vba
Скачать 299.7 Kb.
|
1 Лабораторная работа № 1. Макросы Цель и задачи работы: определение и понятие «Макрос», сущность языка программирования VBA. Теоретическое обоснование Макрос – это программа, состоящая из списка команд, которые должны быть выполнены приложением. Макрос служит для объединения нескольких различных действий в одну процедуру, которую вы можете легко вызвать. Этот список команд состоит в основном из макрокоманд, которые тесно связаны с командами приложения, в котором вы создаете макрос – т. е. с командами Word, Excel или других приложений Microsoft Office. Запись макросов позволяет не просто запомнить последовательность вызовов команд меню, нажатий на кнопки мыши и ввод данных с клавиатуры, но и перевести эти действия на объектно-ориентированный язык программирования Visual Basic для приложений (Visual Basic for Applications, в дальнейшем просто VBA) и сохранить их в виде готовой к вы- полнению программы. VBA является полноценным языком программирования, позволяющим записать не только последовательно выполняемые пользователем действия, но и содержащим все необходимые конструкции языка программирования высокого уровня, включая разнообразные средства организации ветвлений, циклов и ведения диалога с пользователем. Весьма удобный редактор VBA позволяет не только писать и редактировать программы, но и вести их отладку. Можно выделить следующие разновидности макросов: Командные макросы – это наиболее распространенные макросы, обычно состоящие из операторов, эквивалентных тем или иным командам меню или параметрам диалоговых окон. Основным предназначением такого макроса является выполнение действий, аналогичных командам меню – т. е. изменение окружения и основных объектов приложения 2 Пользовательские функции – работают аналогично встроенным функциям Excel. Отличие этих функций от командных макросов состоит в том, что они используют значения передаваемых им аргументов, производят некоторые вычисления и возвращают результат в точку вызова, но не изменяют среды приложения Макрофункции – представляют собой сочетание командных макросов и пользовательских функций. Наряду с тем, что они могут использовать аргументы и возвращать результат, подобно пользовательским функциям, они могут также изменять среду приложения, как и командные макросы. Чаще всего эти макросы вызываются из других макросов, и активно используются для модульного программирования. Если необходимо выполнить ряд одинаковых действий в различных макросах, то обычно эти действия выделяются в отдельную макрофункцию (подпрограмму), которая вызывается всякий раз, когда необходимо выполнить эти повторяющиеся действия. Порядок выполнения Для автоматической записи макроса надо выполнить следующие действия: 1. В обычном режиме выполнить команды, которые надо сохранить в макросе. Это надо сделать, чтобы четко выполнить последовательность команд. 2. Перейти в режим записи макроса. 3. Задать имя макроса. 4. Выполнить необходимую последовательность команд. 5. Выйти из режима записи макроса. Рассмотрим подробнее пункты со 2 по 5. Для переход в режим записи макроса надо на вкладке Разработчик выполнить команду Макрос Запись макроса. В появившемся окне задать 3 имя макроса. Рис.1 Имя макроса может содержать буквы и цифры и не может содержать пробелы. Можно связать выполнение макроса с комбинацией клавиш. Эта комбинация так же задается в окне записи макроса. В этом же окне можно описать, что делает данный макрос. После щелчка по кнопке OK. Выполняется последовательность команд, которую надо запомнить в макросе. В конце выполняется команда Макрос Остановить запись. Вызвать макрос можно двумя способами. 1 способ Выполнить команду Макросы Макросы. В окне Макрос (Рис.2) выбрать нужный макрос и щелкнуть по кнопке Выполнить. 4 В этом же окне можно удалить макрос, который работает не правильно. 2 способ Нажать комбинацию клавиш, связанную с данным макросом. Задания к лабораторной работе Задание 1 Создать макрос, который выделяет диапазон таблицы A1:D5, и выполняет его обрамление. Внешние границы обрамления - двойная линия. Внутренние линии - одинарные. Результат: Имя макроса – обрамление1. Комбинация клавиш: Ctrl+й. После записи макроса перейдите на новый лист и вызовите макрос любым из описанных способов. Обратите внимание, что во всех случаях выполнение макроса связано с конкретным диапазоном A1:D5, но не 5 привязано к листу данной книги. Можно записать командный макрос привязанный не к конкретным ячейкам, а к положению курсора. Для этого надо записывать макрос в режиме относительной адресации. Задание 2 Создать макрос, который выполняет обрамление 4 столбцов и 5 строк. Внешние границы обрамления - двойная линия. Внутренние линии - одинарные. Порядок выполнения: 1. Установите курсор в ячейку A1. 2. Выполните команду Макрос Запись макроса. 3. Задайте имя макроса обрамление2. комбинация клавиш Ctrl+ц. 4. После щелчка по кнопке OK выполните команду Макрос Относительные ссылки 5. Выделите диапазон A1:D5. 6. Выполните заданное обрамление диапазона. 7. Выполните команду Макрос Остановить запись. После записи макроса поставьте курсор в ячейку D8 и выполните макрос обрамление2. В обоих заданиях выделение диапазона выполнялось в макросе. Это приводило к тома, что обрамление выполнялось для диапазона определенных размеров – 4 столбца и 5 строк. Если выделение диапазона выполнять до записи макроса, то размер диапазона обрамления будет произволен. Макрос_Запись_макроса.'>Задание 3 Выполните обрамление диапазона A1:D5. Но сначала надо выделить данный диапазон, а потом выполнить команду Макрос Запись макроса. Задайте имя макроса обрамление3, комбинация клавиш – Ctrl+у. После записи макроса выделите ячейки B10:K12 и вызовите 6 макрос обрамление3. Сохраните книгу под именем Макросы. Просмотр макросов При записи макросов Макрорекодер записывает все выполненные команды в макрос. Эти макросы находятся в модулях и можно увидеть текст этих макросов и, при необходимости, изменить. Это широко используется в программировании VBA. Нет необходимости точно запоминать команды форматирования, копирования и т.д. Достаточно записать их в командный макрос, а потом изменить так как надо. И в нашем случае не надо помнить команды обрамления на языке VBA. Макрорекодер их сам запишет. Для просмотра текста макроса надо: 1. Выполнить команду Макрос Макрос. 2. Выбрать нужный макрос. 3. Щелкнуть по кнопке Изменить. После этого откроется окно Visual Basic и в окне Модуля1 будет выведен код макроса обрамление1. 7 Любой макрос имеет следующую структуру: Sub НазваниеМакроса() Команда VBA Команда VBA End Sub Текст зеленого цвета – это комментарии. Комментарии начинаются со знака «апостроф» и не выполняются компьютером. Рассмотрим код макроса обрамление1. Sub обрамление1() ' ' обрамление1 Макрос ' ' Сочетание клавиш: Ctrl+й ' Range("A1:D5").Select „Выделяется диапазон A1:D5 „Все команды выполняются для выделенного диапазона „ диагонального обрамления нет Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone „ задается стиль левой границы With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble „двойная линия .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With „ задается стиль верхней границы With Selection.Borders(xlEdgeTop) 8 .LineStyle = xlDouble „двойная линия .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With „ задается стиль нижней границы With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble „двойная линия .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With „ задается стиль правой границы With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble „двойная линия .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With „ задается стиль внутренней вертикальной With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous „одинарная сплошная линия .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With „ задается стиль внутренней горизонтальной With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous „одинарная сплошная линия .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With End Sub Рассмотрим код макроса обрамление2. Sub обрамление2() ' ' обрамление2 Макрос ' ' Сочетание клавиш: Ctrl+ц ' ActiveCell.Range("A1:D5").Select ‗от активной ячейки выделяется диапазон A1:D5 Остальной текст программы совпадает с обрамление1. Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble 9 .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With End Sub Код макроса обрамление 3 Sub обрамление3() ' ' обрамление3 Макрос ' ' Сочетание клавиш: Ctrl+у 'Все команды выполняются для выделенного диапазона Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlDouble .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With 10 With Selection.Borders(xlEdgeTop) .LineStyle = xlDouble .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlDouble .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlEdgeRight) .LineStyle = xlDouble .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThick End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With End Sub Задания для самостоятельной работы 1. Создать макрос, который объединяет выделенные ячейки и форматирует текст в этой объединенной ячейке по центру по горизонтали и по вертикали. 2. Создать макрос, который защищает лист с паролем. 3. Создать макрос, который снимает защиту листа с паролем. Вопросы к лабораторной работе 1. Какой макрос, объединяет выделенные ячейки и форматирует текст в этой объединенной ячейке по центру по горизонтали и по вертикали. 2. Какой макрос, защищает лист с паролем. 3. Какой макрос, снимает защиту листа с паролем. |