Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по Visual Basic.doc
Скачиваний:
51
Добавлен:
31.08.2019
Размер:
10.63 Mб
Скачать

Обычно макрос содержит следующие элементы.

Ключевое слово Sub. Этим обозначается начало макроса. Из-за ключевого слова Sub (от анг subroutine - подпрограмма) командные макросы также называются процедурами-подпрограммами.

Имя макроса. После ключевого слова Sub Excel добавляет имя макроса, за которым следует открывающаяся и закрывающаяся скобки.

Комментарии. Первые несколько строк кода начинаются с апострофа, которые говорят редактору VBA, что эти строки являются комментариями. Комментарии отображаются только в окне редактора, при выполнении макроса они не обрабатываются. В каждом записанном макросе в комментариях указывается имя макроса, а также описание, которые вы ввели в диалоговом окне «Запись макроса» (В Excel также указывается комбинация клавиш, если она была задана).

Макрооператоры. Основное тело макроса (другими словами, строки между ключевыми словами Sub и End Sub, исключая комментарии в начале макроса) состоит из последовательности операторов. Они являются интерпретацией действий, которые вы выполнили во время записи макроса.

Строки макроса в модуле VBA являются обычным текстом, который можно изменять также, как это делается в любом текстовом редакторе. Если макрос содержит операторы, которые необходимо удалить, можно просто удалить лишние строки из модуля.

Часто нужно добавить новые действия в записанный макрос. К сожалению, VBA не предоставляет никаких возможностей записи новых операторов в существующий макрос. Вместо этого, нужно сначала записать новый макрос, содержащий необходимые команды, и отобразить его код на экране. Затем можно использовать стандартные средства Windows копирования и вставки (можно просто перетащить текст из одного окна в другое), чтобы перенести необходимые операторы из нового макроса в исходный.

Макросы и безопасность

В то время как большинство макросов не только безвредны, но и полезны, макросы представляют собой важную проблему безопасности. Макрос, созданный с вредительскими целями, может содержать код, который повлечет повреждение или уничтожение документа и даже всей системы.

Чтобы защитить систему и файлы, не включайте макросы из неизвестных источников. Чтобы иметь возможность включать и отключать макросы и при этом иметь доступ ко всем макросам, которые необходимо использовать, в приложениях семейства Office установите средний уровень безопасности. Тогда вы получите возможность включать или выключать макросы каждый раз при открытии файла, который содержит макрос, и при этом сможете запускать любой макрос по вашему выбору.

Чтобы установить уровень безопасности в приложении семейства Office, в котором можно использовать VBA-макрос, в меню Сервис выберите команду Макрос, а затем — Безопасность. Выберите необходимый уровень безопасности и нажмите ОК. Обратите внимание, что не рекомендуется использовать низкий уровень защиты

Практическая часть

Задание 1. Создание макроса

Постановка задачи.

Записать макросы, обеспечивающие выполнение наиболее простых арифметических операций – сложения, вычитания, умножения, деления.

Ход работы.

  1. Запустите MS Excel.

  2. Убедитесь, что Вы находитесь на 1 Листе.

  3. В ячейку A4 введите число 20, а в ячейку B4 – число 5.

  4. В ячейку C4 введите формулу: =A4 + B4.

  5. В результате этих действий в C4 получен результат 25, т.е. Вы выполнили одно из стандартных действий в электронной таблице (ЭТ).

  6. Аналогично п.4 введите в ячейку D4 формулу для разности ячеек A4 и B4, в ячейку E4 – формулу для произведения и в ячейку F4 – формулу для частного ячеек A4 и B4.

  7. Р езультат выполненной работы представлен на Рис.17.1.

Теперь запишем эти действия в виде макроса.

  1. Очистите содержимое ячеек A4:F4 и установите курсор в любую ячейку, кроме очищенных.

  2. Выберите в меню пункт Сервис → Макрос → Начать запись. Появится окно с названием макроса, который Вам предлагается сохранить в этой книге.

  3. Нажмите ОК.

  4. На листе появится окошко Остановка записи (в заголовке будет видна лишь часть записи – «Ос…»). С этого момента все Ваши действия будут записаны, и по этим действиям будет составлена программа.

  5. Проделайте п.3 – 6 из данного задания.

  6. Нажмите кнопку с прямоугольником в окне Остановка записи, остановив, таким образом, процесс записи. Так Вы записали свой первый макрос.

  7. Для просмотра работы макроса очистите заполненные Вами ячейки рабочего листа.

  8. Выберите в меню команду Сервис → Макрос → Макросы → Выполнить. В результат, созданный Вами макрос выполнит все записанные Вами действия.

Примечание! Если Вы во время записи нажимали еще какие-то клавиши, то эти нажатия также будут зафиксированы.

  1. Сохраните файл под именем ЛР17.1.xls. в своей папке.

Задание 2. Чтение и исправление макроса

Для просмотра, чтения и исправления макроса используется среда Microsoft Visual Basic. Для перехода в среду можно воспользоваться несколькими способами, которые рассмотрены в следующем задании.

Постановка задачи.

Прочитать макрос, созданный в предыдущем задании, и внести в него изменения.

Ход работы.

  1. Откройте предыдущее выполненное задание, сохраненное в файле ЛР17.1.xls (если Вы его закрыли).

  2. Выберите команду Сервис → Макрос → Макросы → Войти. В результат откроется окно Microsoft Visual Basic, в окне которого будет располагаться примерно следующий код:

Sub Макрос1()

' Макрос1 Макрос

' Макрос записан 24.02.2010 (Южаков)

Range("A4").Select

ActiveCell.FormulaR1C1 = "20"

Range("B4").Select

ActiveCell.FormulaR1C1 = "5"

Range("C4").Select

ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"

Range("D4").Select

ActiveCell.FormulaR1C1 = "=RC[-3]-RC[-2]"

Range("E4").Select

ActiveCell.FormulaR1C1 = "=RC[-4]*RC[-3]"

Range("F4").Select

ActiveCell.FormulaR1C1 = "=RC[-5]/RC[-4]"

Range("F5").Select

End Sub

  1. Проанализируем содержимое макроса.

Макрос начинается словами Sub … и заканчивается End Sub – это обязательные компоненты. После апострофов следуют комментарии о макросе:

' Макрос1 Макрос

' Макрос записан 24.02.2010 (Южаков)

Это необязательные компоненты.

В строках

Range("A4").Select

ActiveCell.FormulaR1C1 = "20"

Следует указание на ячейку A4, дается указание на ее выделение (Select), и в выделенную, активную ячейку (ActiveCell). Затем вводится формула (FormulaR1C1), а в данном случае просто число 20. Затем также вводится в другую выделенную ячейку число 5.

В следующую выделенную ячейку вводится формула, в которой суммируются два введенных числа ("=RC[-2]+RC[-1]").

  1. Внесите изменения в содержимое строки с указанием вывода разности, например, замените в строке Range(“D4”).Select адрес ячейки D4 на D6.

  2. Внесите изменения в соответствующую формулу: "=R[-2]C[-3]-R[-2]C[-2]".

  3. Сохраните изменения, нажав на панели инструментов кнопку Save (Сохранить).

  4. Закройте редактор Visual Basic.

  5. Очистите заполненные поля ввода и вновь выполните команду Сервис → Макрос → Макросы → Выполнить. Результат представлен на Рис.17.2.

  6. Сохраните изменения в файле под именем ЛР 17.2.xls в своей папке.

Задание 3. Создание кнопки на панели инструментов для созданного макроса

Постановка задачи.

Рассмотрим еще одно создание макроса, но для удобства вызова снабдим его кнопкой на панели инструментов.

Ход работы.

  1. Откройте предыдущее выполненное задание, сохраненное в файле ЛР17.2.xls (если Вы его закрыли).

  2. Перейдите на 2 Лист.

  3. Выберите в меню пункт Сервис → Макрос → Начать запись. Появится окно с названием макроса, который Вам предлагается сохранить в этой книге. Назовите макрос «Моя_таблица» (название должно быть без пробелов!). Также можно назначить горячую клавишу для вызова макроса (например, Ctrl).

  4. Нажмите ОК.

  5. Выберите ячейку A2 и введите в нее текстовую строку «Зарплата».

  6. В ячейку A3 введите текст «Премия»

  7. В ячейку A4 введите текст «Закупка материалов»

  8. В ячейку A5 введите текст «Амортизационные отчисления»

  9. В ячейку A6 введите текст «Накладные расходы»

  10. В ячейку A7 введите текст «Доход от продаж»

  11. В ячейку A8 введите текст «Суммарный расход»

  12. В ячейку A9 введите текст «Прибыль»

  13. В ячейку B8 введите формулу = СУММ (B2:B6).

  14. В ячейку B9 введите формулу = B7 – B8.

  15. Выделите столбец A и в меню Формат выберите команду Столбец → Автоподбор ширины.

  16. Завершите работу макрорекордера , нажав кнопку «Остановить запись».

  17. Перейдите на лист 3.

  18. Выполните команду Сервис → Макрос → Макросы → Выполнить или нажмите сочетание горячих клавиш (если Вы его назначали). На листе 3 должна отобразиться записанная в макросе таблица, приведенная на Рис.17.3.

  19. Выберите команду Сервис → Макрос → Макросы → Войти. В результат записи макроса на листе стандартного модуля Module1 будет записан следующий листинг:

Sub Моя_таблица()

' Моя_таблица Макрос

' Макрос записан 24.02.2010 (Южаков)

' Сочетание клавиш: Ctrl+ф

Range("A2").Select

ActiveCell.FormulaR1C1 = "Зарплата"

Range("A3").Select

ActiveCell.FormulaR1C1 = "Премия"

Range("A4").Select

ActiveCell.FormulaR1C1 = "Закупка материалов"

Range("A5").Select

ActiveCell.FormulaR1C1 = "Амортизационные отчисления"

Range("A6").Select

ActiveCell.FormulaR1C1 = "Накладные расходы"

Range("A7").Select

ActiveCell.FormulaR1C1 = "Доход от продаж"

Range("A8").Select

ActiveCell.FormulaR1C1 = "Суммарный расход"

Range("A9").Select

ActiveCell.FormulaR1C1 = "Прибыль"

Range("B8").Select

ActiveCell.FormulaR1C1 = "=SUM(R[-6]C:R[-2]C)"

Range("B9").Select

ActiveCell.FormulaR1C1 = "=R[-2]C-R[-1]C"

Columns("A:A").Select

Selection.Columns.AutoFit

End Sub

  1. Анализируя код, можно заметить, что первые 16 строк осуществляют последовательный выбор ячеек столбца A и ввод в них текстовой информации. Но данный фрагмент кода можно упростить, заменив каждую пару операторов одним оператором. Например, два оператора

Range("A2").Select

ActiveCell.FormulaR1C1 = "Зарплата"

можно заменить одним оператором:

Range("A2").Value = "Зарплата"

Аналогичные замены могут быть выполнены и для остальных 14 строк.

  1. Осуществите вышеприведенную замену, а также замените другие 14 строк кода.

  2. Сохраните изменения.

  3. Переключитесь на рабочую книгу Excel и проверьте работоспособность макроса.

  4. Проверив работоспособность внесенных изменений, вернитесь в Microsoft Visual Basic для внесения следующих изменений.

  5. Замените операторы

Range("B8").Select

A ctiveCell.FormulaR1C1 = "=SUM(R[-6]C:R[-2]C)"

одним оператором:

Range("B8").FormulaLocal = " =СУММ(B2:B6)"

  1. Сохраните изменения.

  2. Переключитесь на рабочую книгу Excel и проверьте работоспособность макроса.

  3. Убедившись в работоспособности макроса, среду Visual Basic можно закрыть, оставив открытой только книгу Excel.

О сталось снабдить макрос кнопкой на панели инструментов для возможности его упрощенного запуска (не через пункт меню).

  1. Выберите команду Вид → Панели инструментов → Настройка, где выбираем вкладку Панели инструментов (Рис.17.4).

  2. Н а этой вкладке нажимаем кнопку «Создать», и открываем диалоговое окно «Создание панели инструментов» (Рис.17.5).

  3. Задаем в этом окне название кнопки для макроса и нажимаем ОК.

  4. Созданная панель инструментов отображается в списке панелей инструментов. Остается добавить в нее соответствующие команды, для чего переходим на вкладку «Команды» (Рис.17.6).

  5. В ыбираем Настраиваемую кнопку и перетаскиваем ее на расположенную рядом с окном появившуюся панель.

  6. В активизировавшейся кнопке «Изменить выделенный объект» выбираем команду «Назначить макрос». Открывается одноименное окно (Рис.17.7).

  7. Выбираем соответствующий макрос (в нашем случае «Моя_таблица») и нажимаем ОК.

  8. Перетаскиваем созданную панель инструментов к верхней части открытого окна программы Excel, располагая ее рядом с открытыми панелями (Рис.17.8).

  9. П роверьте работоспособность созданной панели инструментов.

  10. Сохраните изменения в файле под именем ЛР 17.3.xls.

Подведем итоги

В работе были использованы новые

объекты:

Макросы - запись последовательности нажимаемых клавиш

Range – в ЭТ это диапазон ячеек, в текстовом документе – фрагмент текста

Cells – ячейка с указанием номера строки и номера столбца

Columns - столбцы

методы:

Select (выделение указанной ячейки)

свойства:

Value (значение)

AutoFit (автоширина)

FileName (имя файла)

Задания для самостоятельного выполнения

Создайте свой макрос для какого-либо приложения, снабдив его кнопкой на панели инструментов, и сократив код макроса для уменьшения количества и удобочитаемости кода.

Вопросы для контроля

  1. Что называется макросом?

  2. Как указать в макросе необходимую ячейку?

  3. Что такое объект Range?

  4. Как снабдить макрос кнопкой на панели инструментов?

  5. Опишите последовательность действий для записи макроса.