
- •1.Программирование в vba. Объекты Application, Workbook, Worksheet и Range
- •2.Редактор Visual Basic
- •2.1.Запуск программы
- •2.1.1.Панель инструментов Стандарт
- •2.2.Отладка программ
- •2.2.1.Ошибки при написании программ
- •2.2.1.1.Ошибки компиляции
- •2.2.1.2.Ошибки выполнения
- •2.2.2.Инструкция Option Explicit
- •2.2.3.Пошаговое выполнение программ
- •2.2.4.Точка останова (Toggle Breakpoint)
- •2.2.5.Отслеживание значений свойств и переменных
- •3.Объекты Application, Workbook, Worksheet и Range. Встроенные функции Dir, MkDir, MsgBox, InputBox
- •3.1.Программа СлучайныеЧисла
- •3.2.Программа УдалениеКниги
- •3.3.Программа СлучайныеЧислаОформление
- •4.Переменные
- •4.1.Объектные переменные
- •4.2.Пользовательский тип данных
- •5.Массивы
- •5.1.1.Функция Erase
- •5.1.2.Функции lBound и uBound
- •6.Подпрограммы. Функции. Область видимости переменных, подпрограмм и функций.
- •6.1.Вызов подпрограммы
- •6.2.Передача данных при вызове программы
- •6.2.1.Передача по ссылке и по значению
- •6.3.Функции
- •6.4.Область видимости переменных
- •6.4.1.Переменные уровня процедуры
- •6.4.2.Переменные уровня модуля
- •6.4.3.Переменные уровня проекта
- •6.4.4.Сохраняемые переменные
- •6.4.5.Область видимости подпрограмм и функций
- •6.4.6.Сохраняемые подпрограммы и функции
- •7.Управляющие структуры: If-Then-Else, Select Case, For-Next, While-Wend, Do-Loop, For-Each-Next
- •8.Инструкция With
- •9.Встроенные функции vba
- •9.1.Математические функции
- •9.2.Функции проверки типов
- •9.3.Функции преобразования форматов
- •9.4.Функции обработки строк
- •9.5.Функции времени и даты
- •10.Обработка ошибок: инструкция On Error
- •11.Пользовательский интерфейс
- •11.1.Создание формы (UserForm) и добавление кнопок (СоmmandButton)
- •11.2.Вывод формы на экран (запуск формы)
- •11.3.Поле (TextBox) и надпись (Label).
- •11.4.Список (ListBox) и поле со списком (ComboBox)
- •11.4.1.Список (ListBox)
- •11.4.2.Определение выбранных элементов списка
- •11.4.3.Поле со списком (ComboBox)
- •11.4.4.Определение выбранного элемента
- •11.4.5.Создание взаимосвязанных элементов управления
- •11.5.Флажок (CheckBox)
- •11.6.Выключатель (ToggleButton)
- •11.7.Переключатель (OptionButton)
- •11.8.Счетчик (SpinButton)
- •11.9.Создание нестандартных меню и панелей инструментов.
- •11.9.1.Пример создания/удаления панели инструментов
- •11.9.2.Пример создания/удаления меню
- •12.События объектов Workbook и Worksheet
- •12.1.События объекта Workbook
- •12.2.События объекта Worksheet
- •Домашнее задание №1
- •Домашнее задание №2 и №3. Типовые варианты.
- •Вариант 1. Домашнее задание №2
- •Списочный состав института
- •Домашнее задание №3
- •Вариант 2. Домашнее задание №2
- •Списочный состав института
- •Домашнее задание №3
- •Вариант 3. Домашнее задание №2
- •Домашнее задание №3
- •Вариант 4. Домашнее задание №2
- •Домашнее задание №3
- •Вариант 5. Домашнее задание №2
- •Домашнее задание №3
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ «МИСиС»
Кафедра автоматизированных систем управления
C.Ю. Муратова
Макросы и приложения
Лабораторный практикум
Москва 2013
Оглавление
1. Программирование в VBA. Объекты Application, Workbook, Worksheet и Range 4
2. Редактор Visual Basic 4
2.1. Запуск программы 7
2.1.1. Панель инструментов Стандарт 7
2.2. Отладка программ 9
2.2.1. Ошибки при написании программ 9
2.2.1.1. Ошибки компиляции 9
2.2.1.2. Ошибки выполнения 11
2.2.2. Инструкция Option Explicit 14
2.2.3. Пошаговое выполнение программ 15
2.2.4. Точка останова (Toggle Breakpoint) 16
2.2.5. Отслеживание значений свойств и переменных 18
3. Объекты Application, Workbook, Worksheet и Range. Встроенные функции Dir, MkDir, MsgBox, InputBox 20
3.1. Программа СлучайныеЧисла 20
3.2. Программа УдалениеКниги 26
3.3. Программа СлучайныеЧислаОформление 28
4. Переменные 32
4.1. Объектные переменные 32
4.2. Пользовательский тип данных 34
5. Массивы 37
5.1.1. Функция Erase 44
5.1.2. Функции LBound и UBound 45
6. Подпрограммы. Функции. Область видимости переменных, подпрограмм и функций. 45
6.1. Вызов подпрограммы 45
6.2. Передача данных при вызове программы 48
6.2.1. Передача по ссылке и по значению 50
6.3. Функции 51
6.4. Область видимости переменных 52
6.4.1. Переменные уровня процедуры 52
6.4.2. Переменные уровня модуля 53
6.4.3. Переменные уровня проекта 53
6.4.4. Сохраняемые переменные 54
6.4.5. Область видимости подпрограмм и функций 54
6.4.6. Сохраняемые подпрограммы и функции 55
7. Управляющие структуры: If-Then-Else, Select Case, For-Next, While-Wend, Do-Loop, For-Each-Next 55
8. Инструкция With 60
9. Встроенные функции VBA 61
9.1. Математические функции 61
9.2. Функции проверки типов 61
9.3. Функции преобразования форматов 62
9.4. Функции обработки строк 63
9.5. Функции времени и даты 65
10. Обработка ошибок: инструкция On Error 65
11. Пользовательский интерфейс 66
11.1. Создание формы (UserForm) и добавление кнопок (СоmmandButton) 67
11.2. Вывод формы на экран (запуск формы) 71
11.3. Поле (TextBox) и надпись (Label). 72
11.4. Список (ListBox) и поле со списком (ComboBox) 75
11.4.1. Список (ListBox) 75
11.4.2. Определение выбранных элементов списка 78
11.4.3. Поле со списком (ComboBox) 79
11.4.4. Определение выбранного элемента 81
11.4.5. Создание взаимосвязанных элементов управления 82
11.5. Флажок (CheckBox) 85
11.6. Выключатель (ToggleButton) 87
11.7. Переключатель (OptionButton) 89
11.8. Счетчик (SpinButton) 90
11.9. Создание нестандартных меню и панелей инструментов. 94
11.9.1. Пример создания/удаления панели инструментов 94
11.9.2. Пример создания/удаления меню 96
12. События объектов Workbook и Worksheet 98
12.1. События объекта Workbook 98
12.2. События объекта Worksheet 99
Домашнее задание №1 102
Домашнее задание №2 и №3. Типовые варианты. 103
Вариант 1. 104
Вариант 2. 106
Вариант 3. 108
Вариант 4. 111
Вариант 5. 113
1.Программирование в vba. Объекты Application, Workbook, Worksheet и Range
Инструкции языка VBA содержатся в программах двух типов — подпрограммах и функциях.
Подпрограмма1 — основной строительный блок приложения VBA. Она содержит фрагмент кода, состоящий из нескольких инструкций. Все приложение Excel можно записать в виде одной подпрограммы, хотя, как правило, их бывает несколько. Каждая подпрограмма обязательно имеет имя. Первым символом имени подпрограммы должна быть буква. Остальные символы могут быть буквами, цифрами или знаками подчеркивания. В имени подпрограммы не допускаются пробелы; в качестве разделителей слов следует использовать знаки подчеркивания.
Рассмотрим пример2 простейшей программы на языке VBA.
Sub УзнатьАвтора()
Dim Автор As String
Автор = Workbooks("Мои таблицы.xls").Author
MsgBox "Автор этой книги: " & Автор
End Sub
Программа начинается с ключевого слова Sub и заканчивается ключевым словом End Sub, которые задают границы программы (в данном случае программы УзнатьАвтора).
Как вы знаете, программы создаются в редакторе Visual Basic, с которым мы и познакомимся.
2.Редактор Visual Basic
Редактор Visual Basic располагает всеми необходимыми средствами для написания программ, создания форм и отладки приложений.
В рабочей книге Excel Мои таблицы.xls наберем две программы, одна из которых задает свойство Author рабочей книги, а другая – возвращает его значение:
Sub ЗадатьАвтора()
Dim Автор As String
Workbooks("Мои таблицы.xls").Author = "Муратова С.Ю."
End Sub
Sub УзнатьАвтора()
Dim Автор As String
Автор = Workbooks("Мои таблицы.xls").Author
MsgBox "Автор этой книги: " & Автор
End Sub
Чтобы набрать текст этих программ:
Создайте рабочую книгу Мои таблицы.xls.
Выполните команду Сервис/Макрос/Редактор Visual Basic или нажмите клавиши [Alt + F11] – вы окажетесь в окне редактора Visual Basic.
Выполните команду Вставка/Модуль (Insert/Module).
В появившемся окне наберите две подпрограммы ЗадатьАвтора и УзнатьАвтора, указав свою фамилию и инициалы.
Вернитесь в окно Excel и запустите сначала макрос ЗадатьАвтора, а затем УзнатьАвтора.
Когда программа большая, перемещение по окну модуля облегчают два раскрывающихся списка в его верхней части (Рис. 2 -1). В списке объектов (Object) перечислены объекты, коды которых можно просмотреть. В списке процедур (Procedure) – программы, которые находятся в текущем модуле. С помощью этих списков можно легко и быстро найти нужную вам программу.
Список объектов
Список процедур
Окно проекта
Окно свойств
Рис. 2‑1. Окно редактора Visual Basic
Модуль можно просматривать
двумя способами. В
режиме по умолчанию, называемом
представлением процедуры (Procedure
View),
в окне модуля отображается только одна
программа. Чтобы вывести
на экран все программы щелкните по
кнопке Просмотр всего
модуля
(Full
Module
View).
В проекте VBA может содержаться несколько модулей. В одном модуле может находиться любое количество программ.
Окно проекта содержит иерархический список элементов проекта. В их число входят объекты высокого уровня – рабочие листы, диаграммы, ЭтаКнига (ThisWorkbook) (ссылка на рабочую книгу, в которую помещен проект). Может также включать модули, модули классов (они позволяют определять собственные объекты) и формы (нестандартные диалоговые окна).
Окно свойств позволяет просматривать и задавать свойства различных объектов проекта, например объектов Excel, перечисленных в окне проекта.
Окно UserForm (см. 11.1) позволяет создавать нестандартные диалоговые окна, размещать на них элементы управления ActiveX и проверять их действие.
Окно для просмотра объектов (Рис. 2‑2) поможет вам найти и использовать любой объект, необходимый в приложении.
Названные окна отображаются/скрываются с помощью соответствующих команд меню Вид:
Проводник проекта (View/Project Explorer)
Окно свойств (View/Proreties Window)
Объект (View/Object)
Просмотр объектов (View/Object Browser)
или кнопками на панели инструментов Стандарт (Рис. 2 -3).
Окна отладки, контрольного значения и локальных переменных используется при отладке программы. Открываются командами меню Вид (View) или кнопками на панели инструментов Отладка (см. 2.2.5).
Окна программы, UserForm и просмотра объектов – обычные окна редактора Visual Basic, переключаться между которыми можно с помощью меню Окно (Window).
Остальные окна ведут себя как панели инструментов: их можно зафиксировать в окне редактора или перетащить за его пределы. Чтобы разблокировать окно, перетащите строку его заголовка. Заблокированные окна масштабируют, перетаскивая их границы.