6.1. Лабораторная работа № 1.
Тема: "Знакомство с интегрированной средой разработки VBA"
Цель работы: получить навыки работы в среде VBA.
Задание:
1. Загрузить приложение Ехсеl.
2. На "Лист1" Ехсеl занести исходные данные:
|
А |
В |
С |
1 |
a= |
5 |
|
2 |
b= |
2 |
|
3 |
n= |
3 |
|
3. Загрузить редактор VBA: Сервис Макрос Редактор VBA.
4. Создать новый модуль: Вставка Модуль. В его окне написать текст программы:
Sub Prtm1()
Dim a As Single, b As Single, c As Single
Dim d As Single, i As Integer, n As Integer
Sheets("Лист1").Activate
a= Cells(1,2)
b= Cells(2,2)
n= Cells(3,2)
For i=1 To n
c=a*b/(a-b)*i
d=c*b/4
Cells(i+1,4)=i
Cells(i+1,5)=c
Cells(i+1,6)=d
Next i
Cells(1,4)="i"
Cells(1,5)="c"
Cells(1,6)="d"
End Sub
5. Cохранить модуль в книге с именем ОТЛАДКА в папке своей группы.
6. Закрыть окно VBA и Ехсеl.
7. Загрузить приложение Ехсеl и открыть книгу ОТЛАДКА, а затем окно Модуля1.
8. Запустить программу на выполнение.
9. Если есть ошибки, то исправить их и запустить программу повторно.
10. Переключиться на "Лист1" Ехсеl, просмотреть результаты работы программы, а затем удалить результаты работы программы.
11. Вернуться в окно редактора VBA.
12. Осуществить пошаговое выполнение программы, просматривая при этом значения всех переменных.
13. Создать новый модуль, в который скопировать текст программы из Модуля1.
14. Изменить в тексте программы Модуля2 оператор
Sheets("Лист1").Activate на оператор
Sheets("Лист2").Activate
15. Переключиться на "Лист2" Ехсеl и занести туда новые исходные данные для программы.
16. Вернуться в окно Модуля2 и запустить программу на выполнение.
17. Переключиться на "Лист2" Ехсеl и просмотреть результаты работы программы.
18. Показать работу преподавателю.
6.2. Лабораторная работа №2.
Тема: "Создание экранных форм: работа с элементами управления"
Цель работы: научиться работать с элементами управления в среде VBA.
Задание:
1. Разработать блок-схему алгоритма и проект VBA с экранной формой (см. пример экранной формы) в соответствии с вариантом задания (варианты приведены ниже):
- Войти в интегрированную среду разработки VBA: Сервис Макрос Редактор VBA.
- Отобразить Окно Проекта : Вид(View) Project Explorer
- Отобразить Окно Свойств выделенного элемента управления : Вид(View) Properties Windows
- Добавить форму в проект : Вставка(Insert) USER FORM.
- Добавить нужные элементы управления на форму с помощью Панели элементов (ToolBox).
- Определить Свойство (Name) для текстовых полей (TextBox) и кнопок (CommandButton).
- Определить Свойство Caption для формы пользователя (User Form),надписей(Label), командных кнопок (CommandButton).
2. Изменить шрифт надписей "Исходные данные" и "Результаты" (Свойства-Font).
3. Установить бирюзовый цвет фона формы пользователя (Свойства –BackColor).
4. Установить серый цвет фона кнопок (Свойства –BackColor).
5. Добавить рисунок в форму пользователя (Свойства Picture Выбрать рисунок на свой вкус).
6. Создать программный модуль в соответствии с вариантом задания:
- Двойной щелчок по кнопке "Вычисление" в окне редактора VBA ввести текст подпрограммы обработки щелчка по кнопке CmdSolve.
- Двойной щелчок по кнопке "Очистка" в окне редактора VBA ввести текст подпрограммы обработки щелчка по кнопке
- CmdClear.
- Двойной щелчок по кнопке "Выход" в окне редактора VBA ввести текст подпрограммы обработки щелчка по кнопке CmdExit..
7. Когда текст всех подпрограмм введен, выполнить Запуск (Run Macro) программы и если есть сообщения об ошибках компиляции – исправить их и вновь выполнить запуск программы.
8. В режиме выполнения программы ввести исходные данные в соответствующие поля.
9. Щелкнуть по кнопке "Вычисление".
10. Щелкнуть по кнопке "Очистка".
11. Ввести другие значения входных данных.
12. Щелкнуть по кнопке "Выход".
Методические указания.
Рассмотрим пример экранной формы:
6.3. Лабораторная работа №3.
Тема: "Создание программных модулей VBA для обработки
табличных данных MS Excel ".
Цель работы: научиться обрабатывать табличне данные в среде VBA.
Задание:
Создать проект, формы пользователя и программные модули для обработки данных, организованных в таблице Excel соответствующей варианту задания (варианты заданий приведены на стр.67). Во всех заданиях обрабатываются данные таблицы, созданной в п.1.
Методические указания.
Рассмотрим пример решения следующей задачи:
Создать проект, формы пользователя и программные модули для обработки сессии студентов:
1 Создать таблицу следующей структуры:
– индекс группы;
– фамилия студента;
– оценки по пяти экзаменам;
– стипендия;
2 Добавить в таблицу произвольное количество строк;
3 Рассчитать стипендию студентам по результатам сессии, причем отличникам стипендию увеличить на 100%, сдавшим без троек – увеличить на 30%, а при наличии хотя бы одной двойки стипендию не начислять;
4 Создать на 2-ом листе книги ведомость для выдачи стипендии студентам;
5 Сортировать данные в таблице по выбранной колонке;
6 Изменить показатели студента с заданной фамилией;
7 Удалить из таблицы данные о студентах, имеющих более двух двоек.
Пример таблицы:
Индекс группы |
ФИО студента |
Экзамен 1 |
Экзамен 2 |
Экзамен 3 |
Экзамен 4 |
Экзамен 5 |
Стипендия |
УТР02Б |
Петров |
5 |
4 |
5 |
4 |
2 |
0 |
УТР02А |
Иванов |
4 |
5 |
3 |
3 |
3 |
100 |
УТР02А |
Климова |
5 |
4 |
5 |
4 |
3 |
100 |
УТР02А |
Морозова |
3 |
3 |
3 |
3 |
3 |
100 |
УТР02А |
Абрамова |
4 |
4 |
5 |
3 |
3 |
100 |
УТР02А |
Сидоров |
4 |
4 |
3 |
3 |
4 |
100 |
УТР02Б |
Жуковская |
4 |
3 |
5 |
4 |
4 |
100 |
УТР02А |
Ющенко |
3 |
3 |
3 |
3 |
3 |
100 |
УТР02Б |
Жукова |
5 |
5 |
5 |
5 |
5 |
200 |
Для решения данной задачи предлагается следующий проект:
Программный модуль «ВВОД» (вызывается и в режиме «ДОБАВИТЬ»):
Dim i As Double
Private Sub UserForm_Activate()
‘ Подсчет количества строк в таблице и вывод на форму в поле txtN
i = 1
Do While Cells(i, 1) > " "
i = i + 1
Loop
txtN.Enabled = True
txtN.Text = CStr(i - 2)
txtN.Enabled = False
End Sub
Программный модуль «СОРТИРОВКА»:
Программный модуль «КОРРЕКТИРОВКА»:
МодульKOR
Программный модуль «КОРРЕКТИРОВКА» (продолжение):
Модуль KOR1
Программный модуль «УДАЛЕНИЕ»:
Очень удобная онлайн программа плюс бесплатная под названием Dicter переводчик google для перевода текста в один клик, с любого языка мира.