
- •Введение. Установка среды программирования
- •2. История языка Basic
- •3. Установка Visual Basic
- •Лабораторная работа №1. Интерфейс Visual Basic. Создание первого проекта
- •Теоретическая часть
- •1 . Первое знакомство
- •5. Стандартная панель инструментов
- •Практическая часть
- •Лабораторная работа №2. Изменение свойств компонентов. Метод Print
- •Теоретическая часть
- •1. Состав панели управления
- •2. Окно свойств и редактора кода
- •3. Свойства элементов управления
- •3.1 Свойства элемента Form
- •3.2 Свойства элемента TextBox
- •3.3. Свойства компонента CommandButton
- •Объект.Print [Список вывода]
- •Объект.Cls Практическая часть
- •Лабораторная работа №3. Работа с простейшим графическим объектом Visual Basic
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №4. Работа с арифметическими выражениями и функциями
- •Теоретическая часть
- •1. Арифметические выражения Visual Basic.
- •2. Встроенные функции Visual Basic
- •3. Функции преобразования
- •Str (число)
- •Val (символьное выражение)
- •Практическая часть
- •Лабораторная работа №5. Решение простейших математических задач с использованием линейных алгоритмов
- •Теоретическая часть
- •1. Типы данных
- •2. Объявление переменных
- •Public / Private / Dim Имя_переменной [As Тип_переменной]
- •Оператор_объявления_типа Строка_интервалов_имен
- •3. Константы Visual Basic
- •4. Область видимости переменной
- •Public / Private / Dim Имя_переменной [As Тип_переменной]
- •Имя_формы.Имя_переменной
- •Практическая часть
- •Лабораторная работа №6. Программирование ветвлений с использованием оператора If
- •Теоретическая часть
- •1. Конструкция If … Then … End If
- •2. Конструкция If … Then … Else … End If
- •3. Конструкция If … Then … Else If… End If
- •Практическая часть
- •Лабораторная работа №7. Программирование ветвлений с использованием оператора Case
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №8. Программирование циклов
- •Теоретическая часть
- •1. Цикл For…Next
- •2. Цикл For Each … Next
- •3. Цикл Do While … Loop
- •4. Цикл Do Until … Loop
- •5. Цикл Do … Loop While
- •6. Цикл Do … Loop Until
- •7. Цикл While … Wend
- •Практическая часть
- •Лабораторная работа №9. Разработка приложений для обработки массивов
- •Теоретическая часть
- •1. Объявление массивов
- •2. Массивы с фиксированной границей и динамические массивы.
- •UBound (имяМассива [, измерение]) Практическая часть
- •Лабораторная работа №10. Разработка приложений с использованием методов рисованИя графических примитивов
- •Теоретическая часть
- •1. Графическая поверхность
- •2. Графические примитивы
- •Практическая часть
- •Лабораторная работа №11. Построение графиков и диаграмм
- •Лабораторная работа №12. Применение пользовательских диалоговых окон
- •Теоретическая часть
- •1. Окно и функция InputBox
- •2. Окно MsgBox
- •MsgBox Текст сообщения [,Константа] [,Заголовок]
- •3. Функция MsgBox()
- •Практическая часть
- •Лабораторная работа №13. Разработка компьютерного теста с использованием Visual Basic
- •Теоретическая часть
- •Лабораторная работа №14. Создание пользовательского меню и панели инструментов
- •Теоретическая часть
- •Call Имя процедуры ([Список Параметров Вызова]),
- •Практическая часть
- •Лабораторная работа №15. Создание текстового редактора
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №16. Разработка мультимедиа-приложений
- •Теоретическая часть
- •Практическая часть
- •Лабораторная работа №17. Макросы: запись, запуск, чтение
- •Теоретическая часть
- •Обычно макрос содержит следующие элементы.
- •Практическая часть
- •Лабораторная работа №18. Создание форм рабочего листа
- •Теоретическая часть
- •1. Когда необходимо использовать vba в Excel
- •2. Объект Application
- •3. Объект Workbook
- •4. Объект Worksheet
- •5. Объект Range
- •Инициализация и отображение диалогового окна
- •Практическая часть Создание пользовательской формы
- •Создание пользовательской формы
- •Практические задания по программированию на vba
- •Лабораторная работа №19. Создание книги лабораторных работ с автоматизированным выбором страниц книги
- •Практическая часть
- •Лабораторная работа №20. Моделирование процессов
- •Теоретическая часть
- •Лабораторная работа №21. Создание сводных таблиц в vba
- •Теоретическая часть Практическая часть
- •Лабораторная работа №22. Работа с компонентом Chart
- •Теоретическая часть Практическая часть
- •Лабораторная работа №23. Работа с базами данных в Visual Basic
- •Теоретическая часть Практическая часть
- •Лабораторная работа №24. Работа с базами данных в Excel с использованием Visual Basic
- •Теоретическая часть Практическая часть
- •Лабораторная работа №25. Обработка данных на рабочем листе Теоретическая часть Практическая часть
Обычно макрос содержит следующие элементы.
Ключевое слово Sub. Этим обозначается начало макроса. Из-за ключевого слова Sub (от анг subroutine - подпрограмма) командные макросы также называются процедурами-подпрограммами.
Имя макроса. После ключевого слова Sub Excel добавляет имя макроса, за которым следует открывающаяся и закрывающаяся скобки.
Комментарии. Первые несколько строк кода начинаются с апострофа, которые говорят редактору VBA, что эти строки являются комментариями. Комментарии отображаются только в окне редактора, при выполнении макроса они не обрабатываются. В каждом записанном макросе в комментариях указывается имя макроса, а также описание, которые вы ввели в диалоговом окне «Запись макроса» (В Excel также указывается комбинация клавиш, если она была задана).
Макрооператоры. Основное тело макроса (другими словами, строки между ключевыми словами Sub и End Sub, исключая комментарии в начале макроса) состоит из последовательности операторов. Они являются интерпретацией действий, которые вы выполнили во время записи макроса.
Строки макроса в модуле VBA являются обычным текстом, который можно изменять также, как это делается в любом текстовом редакторе. Если макрос содержит операторы, которые необходимо удалить, можно просто удалить лишние строки из модуля.
Часто нужно добавить новые действия в записанный макрос. К сожалению, VBA не предоставляет никаких возможностей записи новых операторов в существующий макрос. Вместо этого, нужно сначала записать новый макрос, содержащий необходимые команды, и отобразить его код на экране. Затем можно использовать стандартные средства Windows копирования и вставки (можно просто перетащить текст из одного окна в другое), чтобы перенести необходимые операторы из нового макроса в исходный.
Макросы и безопасность
В то время как большинство макросов не только безвредны, но и полезны, макросы представляют собой важную проблему безопасности. Макрос, созданный с вредительскими целями, может содержать код, который повлечет повреждение или уничтожение документа и даже всей системы.
Чтобы защитить систему и файлы, не включайте макросы из неизвестных источников. Чтобы иметь возможность включать и отключать макросы и при этом иметь доступ ко всем макросам, которые необходимо использовать, в приложениях семейства Office установите средний уровень безопасности. Тогда вы получите возможность включать или выключать макросы каждый раз при открытии файла, который содержит макрос, и при этом сможете запускать любой макрос по вашему выбору.
Чтобы установить уровень безопасности в приложении семейства Office, в котором можно использовать VBA-макрос, в меню Сервис выберите команду Макрос, а затем — Безопасность. Выберите необходимый уровень безопасности и нажмите ОК. Обратите внимание, что не рекомендуется использовать низкий уровень защиты
Практическая часть
Задание 1. Создание макроса
Постановка задачи.
Записать макросы, обеспечивающие выполнение наиболее простых арифметических операций – сложения, вычитания, умножения, деления.
Ход работы.
Запустите MS Excel.
Убедитесь, что Вы находитесь на 1 Листе.
В ячейку A4 введите число 20, а в ячейку B4 – число 5.
В ячейку C4 введите формулу: =A4 + B4.
В результате этих действий в C4 получен результат 25, т.е. Вы выполнили одно из стандартных действий в электронной таблице (ЭТ).
Аналогично п.4 введите в ячейку D4 формулу для разности ячеек A4 и B4, в ячейку E4 – формулу для произведения и в ячейку F4 – формулу для частного ячеек A4 и B4.
Р
езультат выполненной работы представлен на Рис.17.1.
Теперь запишем эти действия в виде макроса.
Очистите содержимое ячеек A4:F4 и установите курсор в любую ячейку, кроме очищенных.
Выберите в меню пункт Сервис → Макрос → Начать запись. Появится окно с названием макроса, который Вам предлагается сохранить в этой книге.
Нажмите ОК.
На листе появится окошко Остановка записи (в заголовке будет видна лишь часть записи – «Ос…»). С этого момента все Ваши действия будут записаны, и по этим действиям будет составлена программа.
Проделайте п.3 – 6 из данного задания.
Нажмите кнопку с прямоугольником в окне Остановка записи, остановив, таким образом, процесс записи. Так Вы записали свой первый макрос.
Для просмотра работы макроса очистите заполненные Вами ячейки рабочего листа.
Выберите в меню команду Сервис → Макрос → Макросы → Выполнить. В результат, созданный Вами макрос выполнит все записанные Вами действия.
Примечание! Если Вы во время записи нажимали еще какие-то клавиши, то эти нажатия также будут зафиксированы.
Сохраните файл под именем ЛР17.1.xls. в своей папке.
Задание 2. Чтение и исправление макроса
Для просмотра, чтения и исправления макроса используется среда Microsoft Visual Basic. Для перехода в среду можно воспользоваться несколькими способами, которые рассмотрены в следующем задании.
Постановка задачи.
Прочитать макрос, созданный в предыдущем задании, и внести в него изменения.
Ход работы.
Откройте предыдущее выполненное задание, сохраненное в файле ЛР17.1.xls (если Вы его закрыли).
Выберите команду Сервис → Макрос → Макросы → Войти. В результат откроется окно 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
Проанализируем содержимое макроса.
Макрос начинается словами Sub … и заканчивается End Sub – это обязательные компоненты. После апострофов следуют комментарии о макросе:
'
Макрос1 Макрос
' Макрос записан 24.02.2010 (Южаков)
Это необязательные компоненты.
В строках
Range("A4").Select
ActiveCell.FormulaR1C1 = "20"
Следует указание на ячейку A4, дается указание на ее выделение (Select), и в выделенную, активную ячейку (ActiveCell). Затем вводится формула (FormulaR1C1), а в данном случае просто число 20. Затем также вводится в другую выделенную ячейку число 5.
В следующую выделенную ячейку вводится формула, в которой суммируются два введенных числа ("=RC[-2]+RC[-1]").
Внесите изменения в содержимое строки с указанием вывода разности, например, замените в строке Range(“D4”).Select адрес ячейки D4 на D6.
Внесите изменения в соответствующую формулу: "=R[-2]C[-3]-R[-2]C[-2]".
Сохраните изменения, нажав на панели инструментов кнопку Save (Сохранить).
Закройте редактор Visual Basic.
Очистите заполненные поля ввода и вновь выполните команду Сервис → Макрос → Макросы → Выполнить. Результат представлен на Рис.17.2.
Сохраните изменения в файле под именем ЛР 17.2.xls в своей папке.
Задание 3. Создание кнопки на панели инструментов для созданного макроса
Постановка задачи.
Рассмотрим еще одно создание макроса, но для удобства вызова снабдим его кнопкой на панели инструментов.
Ход работы.
Откройте предыдущее выполненное задание, сохраненное в файле ЛР17.2.xls (если Вы его закрыли).
Перейдите на 2 Лист.
Выберите в меню пункт Сервис → Макрос → Начать запись. Появится окно с названием макроса, который Вам предлагается сохранить в этой книге. Назовите макрос «Моя_таблица» (название должно быть без пробелов!). Также можно назначить горячую клавишу для вызова макроса (например, Ctrl+ф).
Нажмите ОК.
Выберите ячейку A2 и введите в нее текстовую строку «Зарплата».
В ячейку A3 введите текст «Премия»
В ячейку A4 введите текст «Закупка материалов»
В
ячейку A5 введите текст «Амортизационные отчисления»
В ячейку A6 введите текст «Накладные расходы»
В ячейку A7 введите текст «Доход от продаж»
В ячейку A8 введите текст «Суммарный расход»
В ячейку A9 введите текст «Прибыль»
В ячейку B8 введите формулу = СУММ (B2:B6).
В ячейку B9 введите формулу = B7 – B8.
Выделите столбец A и в меню Формат выберите команду Столбец → Автоподбор ширины.
Завершите работу макрорекордера , нажав кнопку «Остановить запись».
Перейдите на лист 3.
Выполните команду Сервис → Макрос → Макросы → Выполнить или нажмите сочетание горячих клавиш (если Вы его назначали). На листе 3 должна отобразиться записанная в макросе таблица, приведенная на Рис.17.3.
Выберите команду Сервис → Макрос → Макросы → Войти. В результат записи макроса на листе стандартного модуля 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
Анализируя код, можно заметить, что первые 16 строк осуществляют последовательный выбор ячеек столбца A и ввод в них текстовой информации. Но данный фрагмент кода можно упростить, заменив каждую пару операторов одним оператором. Например, два оператора
Range("A2").Select
ActiveCell.FormulaR1C1 = "Зарплата"
можно заменить одним оператором:
Range("A2").Value = "Зарплата"
Аналогичные замены могут быть выполнены и для остальных 14 строк.
Осуществите вышеприведенную замену, а также замените другие 14 строк кода.
Сохраните изменения.
Переключитесь на рабочую книгу Excel и проверьте работоспособность макроса.
Проверив работоспособность внесенных изменений, вернитесь в Microsoft Visual Basic для внесения следующих изменений.
Замените операторы
Range("B8").Select
A
ctiveCell.FormulaR1C1
= "=SUM(R[-6]C:R[-2]C)"
одним оператором:
Range("B8").FormulaLocal = " =СУММ(B2:B6)"
Сохраните изменения.
Переключитесь на рабочую книгу Excel и проверьте работоспособность макроса.
Убедившись в работоспособности макроса, среду Visual Basic можно закрыть, оставив открытой только книгу Excel.
О
сталось
снабдить макрос кнопкой на панели
инструментов для возможности его
упрощенного запуска (не через пункт
меню).
Выберите команду Вид → Панели инструментов → Настройка, где выбираем вкладку Панели инструментов (Рис.17.4).
Н
а этой вкладке нажимаем кнопку «Создать», и открываем диалоговое окно «Создание панели инструментов» (Рис.17.5).
Задаем в этом окне название кнопки для макроса и нажимаем ОК.
Созданная панель инструментов отображается в списке панелей инструментов. Остается добавить в нее соответствующие команды, для чего переходим на вкладку «Команды» (Рис.17.6).
В
ыбираем Настраиваемую кнопку и перетаскиваем ее на расположенную рядом с окном появившуюся панель.
В активизировавшейся кнопке «Изменить выделенный объект» выбираем команду «Назначить макрос». Открывается одноименное окно (Рис.17.7).
Выбираем соответствующий макрос (в нашем случае «Моя_таблица») и нажимаем ОК.
Перетаскиваем созданную панель инструментов к верхней части открытого окна программы Excel, располагая ее рядом с открытыми панелями (Рис.17.8).
П
роверьте работоспособность созданной панели инструментов.
Сохраните изменения в файле под именем ЛР 17.3.xls.
Подведем итоги
В работе были использованы новые
объекты:
Макросы - запись последовательности нажимаемых клавиш
Range – в ЭТ это диапазон ячеек, в текстовом документе – фрагмент текста
Cells – ячейка с указанием номера строки и номера столбца
Columns - столбцы
методы:
Select (выделение указанной ячейки)
свойства:
Value (значение)
AutoFit (автоширина)
FileName (имя файла)
Задания для самостоятельного выполнения
Создайте свой макрос для какого-либо приложения, снабдив его кнопкой на панели инструментов, и сократив код макроса для уменьшения количества и удобочитаемости кода.
Вопросы для контроля
Что называется макросом?
Как указать в макросе необходимую ячейку?
Что такое объект Range?
Как снабдить макрос кнопкой на панели инструментов?
Опишите последовательность действий для записи макроса.