Цель урока: закрепить практические навыки создания макросов на языке VBA
С помощью макросов, созданных на языке VBA, можно вставлять в презентацию программные коды для автоматизации различных задач (например, обучающие, контролирующие, игровые программы). Для этого будем использовать элементы управления и пользовательские формы.
Задание 1
Создать проект «Проверь себя», включающий задания для проверки навыков устного счёта и знания правил грамматики русского языка. Числа формируются случайные из заданного диапазона [1, n]. Программа должна подсчитывать количество решённых примеров и количество верных ответов.
Перед началом работы запустите программу Power Point и установите низкий уровень безопасности (СЕРВИС – Макрос – Безопасность).
1. Создайте титульный слайд № 1.
2. Создайте слайд № 2 – Меню, предназначенное для выбора предметной области: математика, русский язык. Настройте гиперссылки для перехода на соответствующие слайды № 3 (математика) и № 4 (русский язык) (Рисунок 1).
Рис. 1. Слайд № 2 «Меню»
3. Создайте слайд № 3 (Математика). Разместите на слайде 4 командные кнопки (CommandButton) с помощью панели Элементов управления (Вид – панели инструментов – элементы управления).
4. С помощью автофигур (панель Рисования) создайте на слайде кнопку «Выход», настройте её на завершение презентации. Для этого в контекстном меню кнопки выберите Настройка действия – По щелчку мыши – Перейти по гиперссылке – Завершить показ.
5. Установите свойства командных кнопок. В контекстном меню кнопки CommandButton1 нужно выбрать пункт Свойства и установить свойства в соответствии с таблицей. Аналогично установите свойства остальных кнопок.
Свойство |
Пояснение |
Значение |
Caption | заголовок | Сложение |
Font | шрифт | полужирный, размер 18 |
ForeColor | Цвет шрифта | произвольный |
BackColor | Цвет фона | произвольный |
Внешний вид слайда показан на Рисунке 2.
Рис. 2 Слайд № 3 «Математика»
6. Создайте программные коды каждой кнопки для вызова пользовательских форм (UserForm). Для этого в контекстном меню кнопки выбрать команду «Исходный текст» (или выполнить двойной щелчок по кнопке). Откроется окно программного кода. После заголовка процедуры нужно ввести команду для открытия соответствующей формы:
UserForm1.Show
Private Sub CommandButton1_Click() ‘Сложение UserForm1.Show End Sub Private Sub CommandButton2_Click() ‘Вычитание UserForm2.Show End Sub Private Sub CommandButton3_Click() ‘Умножение UserForm3.Show End Sub Private Sub CommandButton4_Click() ‘Деление UserForm4.Show End Sub
7. Добавьте в проект 4 пользовательские формы командой Insert – UserForm.
8. Перейдите на форму UserForm1 и разместите на ней необходимые элементы управления. Вид формы показан на Рисунке 3. В таблице указаны только элементы управления, которые используются в программном коде. Остальные метки используются для поясняющих надписей на форме. Свойства элементов управления установите самостоятельно.
Элемент управления |
Пояснение |
Назначение |
Label4 | метка | для вывода переменной а (1 слагаемое) |
Label6 | метка | для вывода переменной b (2 слагаемое) |
TextBox1 | текстовое поле | для вывода переменной S (сумма) |
Label12 | метка | для вывода переменной k (количество примеров) |
Label13 | метка | для вывода переменной n (количество верных ответов) |
Label15 | метка | для вывода комментария («верно» или «неверно») |
Label2 | метка | для вывода переменной z (максимальная граница диапазона чисел) |
CommandButton1 | кнопка | Далее (выдаёт следующий пример, проверяет введённый ответ) |
CommandButton2 | кнопка | Результат (выводит результаты) |
CommandButton3 | кнопка | Меню (для возврата назад в меню) |
Рис. 3 Интерфейс формы UserForm1
9. Добавим в проект модуль (Insert – Module), в котором опишем глобальные переменные и их тип. Эти переменные будут доступны для всех пользовательских форм проекта.
a, b – переменные для хранения слагаемых, будут генерироваться с помощью функции случайного числа;
S – переменная для хранения суммы;
k – количество примеров
n – количество верных ответов
z – переменная для хранения максимального значения диапазона случайных чисел.
Global a, b, s, n, k As Integer, z As Integer
10. Создайте программные коды для формы UserForm1 «Сложение».
Private Sub CommandButton1_Click() 'Далее If Val(s) = Val(TextBox1) Then 'Проверка ответа n = n + 1 'подсчёт количества верных ответов Label15.Caption = "Верно!" Else Label15.Caption = "Неверно!" End If k = k + 1 'подсчёт количества примеров Label12.Caption = "" Label13.Caption = "" TextBox1 = "" 'очистка текстового поля Randomize Timer a = Int(Rnd * z) + 1 'генерация случайных чисел b = Int(Rnd * z) + 1 s = a + b 'сумма TextBox2 = Str(s) Label4.Caption = Str(a) Label6.Caption = Str(b) End Sub Private Sub CommandButton2_Click() 'Результат Label12.Caption = Str(k) Label13.Caption = Str(n) End Sub Private Sub UserForm_Activate() 'Загрузка формы n = 0 'очистка счётчика верных ответов k = 1 ‘количество верных ответов z = Val(InputBox("Введите максимальную границу диапазона чисел от 10 до 1000)) Label2.Caption = Label2.Caption & Str(z) Randomize Timer a = Int(Rnd * 10) 'генерация случайных чисел для первого примера b = Int(Rnd * 10) s = a + b Label4.Caption = Str(a) ‘вывод результатов Label6.Caption = Str(b) End Sub Private Sub CommandButton3_Click() 'Назад End End Sub
11. Сохраните работу и проверьте работоспособность всех кнопок.
12. Аналогично создайте программные коды для форм «Вычитание» (UserForm2), «Умножение» (UserForm2), «Деление» (UserForm2).
13. Для вычитания введём проверку логического условия, чтобы из большего числа вычитать меньшее:
20: a = Int(Rnd * z) + 1 'формирование случайных чисел b = Int(Rnd * z) + 1 If a < b Then GoTo 20
14. Для деления введём проверку на кратность чисел, чтобы числа делились нацело:
30: a = Int(Rnd * z) + 1 'формирование случайных чисел b = Int(Rnd * z) + 1 If (a < b) OR (a mod b<>0) Then GoTo 30
15. Создайте слайд № 4 (Русский язык). Разместите на слайде 4 командные кнопки (CommandButton) с помощью панели Элементов управления. Свойства кнопок настройте аналогично слайду № 3. В названиях кнопок укажите правила русского языка (выберите их самостоятельно). Например: «НН и Н», «ЖИ и ШИ» и т.д.
16. Добавьте в проект ещё 4 пользовательские формы, по одной на каждое правило.
17. Перейдите на форму UserForm5 и разместите на ней необходимые элементы управления. Вид формы показан на Рисунке 4. В таблице указаны только элементы управления, которые используются в программном коде.
Элемент управления | Пояснение |
Назначение |
Label6 | метка | для вывода надписи «Количество верных ответов» |
TextBox1-8 | текстовые поля | для ввода пропущенных букв |
Label15 | метка | для вывода надписи «Ошибки выделены красным цветом» |
Label14 | метка | для вывода переменной n (количество верных ответов) |
CommandButton1 | кнопка | Проверка (проверяет ответы и выдаёт результат) |
CommandButton3 | кнопка | Назад (для возврата назад в меню) |
CommandButton2 | кнопка | Далее (переход к следующей форме с заданиями) |
Рис. 4 Интерфейс формы UserForm5
18. Создайте программный код для кнопки «Проверка».
Private Sub CommandButton1_Click() 'Проверка k = 0 ‘количество верных ответов If TextBox1 = "жи" Then k = k + 1 ‘подсчёт количества верных ответов TextBox1.ForeColor = vbGreen ‘выделение верного ответа зелёным цветомElse TextBox1.ForeColor = vbRed ‘выделение неверного ответа красным цветом End If If TextBox2 = "жи" Then k = k + 1 TextBox2.ForeColor = vbGreen Else TextBox2.ForeColor = vbRed End If If TextBox3 = "ши" Then k = k + 1 TextBox3.ForeColor = vbGreen Else TextBox3.ForeColor = vbRed End If If TextBox4 = "жи" Then k = k + 1 TextBox4.ForeColor = vbGreen Else TextBox4.ForeColor = vbRed End If If TextBox5 = "жи" Then k = k + 1 TextBox5.ForeColor = vbGreen Else TextBox5.ForeColor = vbRed End If If TextBox6 = "жи" Then k = k + 1 TextBox6.ForeColor = vbGreen Else TextBox6.ForeColor = vbRed End If If TextBox7 = "и" Then k = k + 1 TextBox7.ForeColor = vbGreen Else TextBox7.ForeColor = vbRed End If If TextBox8 = "и" Then k = k + 1 TextBox8.ForeColor = vbGreen Else TextBox8.ForeColor = vbRed End If Label14.Caption = Str(k) Label15.Caption = "Ошибки выделены красным цветом" End Sub Private Sub CommandButton2_Click() 'Далее UserForm6.Show ‘переход к форме следующего задания End Sub Private Sub UserForm_Activate() ‘Загрузка формы k = 0 End Sub
19. Аналогично создайте программные коды для остальных форм и сохраните проект.
Задания для самостоятельной работы
- Придумайте задания для проверки знаний по информатике и добавьте их в проект.
- Подготовьте ребусы на любые темы и добавьте их в проект. Создайте соответствующие слайды «Информатика» и «Ребусы», пользовательские формы и программные коды.