1. Создаем новую презентацию.
2. Настраиваем её таким образом, что выполнялись макросы, которые мы напишем, и нельзя было переключить слайд без введения ответа (см. предыдущие статьи)
3. Создаем первый слайд, с названием, подзаголовком и кнопкой перехода ко второму слайду.
4. Создаем второй слайд.
Пишем в верхней части вопрос.
Открываем вкладку "Разработчик".
Выбираем инструмент "Переключатель"
Растягиваем рамочку для варианта ответа
Нажимаем инструмент "Свойства" и настраиваем шрифты, выравнивание, и другие параметры, аналогично параметрам "Текстового поля" из предыдущей статьи.
Создаем на слайде столько "Переключателей", сколько вариантов ответов вы хотите дать на этот вопрос.
5. Когда все варианты ответа готовы, создаем кнопку "Дальше" с помощью инструмента "Кнопка"
У меня слайд выглядит к этому моменту вот так:
6. Выбираем щелчком мыши нашу кнопку "Далее" и нажимаем "Просмотреть код". Открывается уже знакомое нам по предыдущему уроку окно VBA.
7. Прежде, чем программировать кнопку, давайте приготовим наши "кастрюли" - зададим переменные, в которых будут сохраняться результаты.
Для этого мы нажимаем в верхней части экрана на слово
"Insert" и выбираем в выпавшем меню слово
"Module"
Теперь в окне для написания программы пишем (или копируем и вставляем) такие слова:
Public Vz,
Po, Pro As Integer
Выглядит это примерно так:
Что это за буквы мы написали?
Мы задали три переменных, т.е. сказали компьютеру приготовить три ячейки памяти, к которым мы сможем обращаться по именам:
- Vz - вопросов задано - здесь будем считать, сколько вопросов мы задали всего. Значение в этой ячейке будет изменяться при каждом переходе с вопроса на вопрос.
- Po - правильных ответов - сколько правильных ответов мы получили за время прохождения теста. Значение в этой ячейке мы будем изменять только в случае получения правильного ответа.
- Pro - процент. Мы на последнем слайде подсчитаем процент правильных ответов от общего количества.
Слово Public говорит компьютеру, что эти три переменных - публичные, мы будем их видеть всю презентацию, а не толлько в рамках одного слайда.
As Integer - мы сказали, что все наши переменные - типа "Целые числа". Для тех, кто не знаком с программированием, уточню:
Тип переменной - это размер кастрюли.
В зависимости от типа переменной, на ячейку будет выделено больше или меньше памяти.
Например, тип "Символ" занимает 1 байт места. Но в него влазит только 1 буква. Или знак препинания. Или пробел. Или цифра. Короче, 1 символ.
А вот если вы захотите запомнить фамилию ученика - тут нужен уже тип STRING - строка. Длина такой переменной будет зависить от длины вписанного значения, например, если вы вписали фамилию Клейн - 5 байт. Но не длиннее 255 символов, включая пробелы.
На дробное число нам понадобится 4 байта для каждой из ячеек.
Но сегодня мы работаем с целыми числами. Поэтому, окончательный перевод:
Взять три ячейки памяти, сделать их видимыми на протяжении всей презентации, назвать Vz, Po, Pro и приготовиться складывать туда целые числа.
Заметьте, на языке программирования - значительно короче.
Закрываем окно VBA крестиком в верхнем правом углу окна. Сохранение произойдет автоматически. Если вы допустили ошибку при переписывании - выскочит окошко с описанием проблемы и предложением исправить. Но - считаем, что все хорошо, и закрываем окно.
8. Выбираем нашу кнопку "Далее" и опять нажимаем "Просмотреть код".
Теперь мы видим слева "Слайд 2", сверху - CommandButton1... и готовые надписи :
Private Sub CommandButton1_Click()
End Sub
Между этими двумя строчками мы вписываем такой код:
Private Sub CommandButton1_Click()
Vz = 0
Po = 0
If OptionButton1.Value = True Then
Po = Po + 1
End If
Vz = Vz + 1
OptionButton1.Value = False
OptionButton2.Value = False
OptionButton3.Value = False
OptionButton4.Value = False
SlideShowWindows(1).View.Next
End Sub
Что означают все эти надписи?
- Для начала проверим, чисты ли наши кастрюли - обнуляем переменные Vz и Po
- У меня в примере правильный ответ соответствует верхнему переключателю. Его номер был 1. Поэтому следующие три строчки:
If OptionButton1.Value = True Then
Po = Po + 1
End If
означают следующее:
Если был выбран ПЕРЕКЛЮЧАТЕЛЬ 1 тогда
Количество правильных ответов увеличить на 1
Закончить блок проверки выбора ответа
Смотрите: если у вас правильный ответ ТРЕТИЙ, тогда вы должны изменить код вот так:
If OptionButton3.Value = True Then
Проверяйте, чтоб у вас стояла правильная цифра...
Обратите внимание: вот эти If... End If заставляют прибавить 1 к количеству правильных ответов ТОЛЬКО в том случае, если ответ был правильным.
Все остальные кусочки кола на этом слайде будут выполняться ВСЕГДА при нажатии на кнопочку "Далее".
- Vz = Vz + 1 - прибавили 1 к количеству заданных вопросов
OptionButton1.Value = False
OptionButton2.Value = False
OptionButton3.Value = False
OptionButton4.Value = False
Все переключатели поставили в положение "не выбрано", чтоб следующий, проходящий Ваш тест, не видел, что ответил предыдущий ученик.
- SlideShowWindows(1).View.Next - перешли на следующий слайд.
У меня следующий слайд выглядит вот так:
От предыдущего слайда создание этого отличается следующим:
- Когда будете создавать переключатели с вариантами ответа, меняйте им в строке Name окна свойств номера, считая номер текущего переключателя как номер по порядку в презентации.
Например, у меня на предыдущем слайде было 4 переключателя с вариантами ответов. Значит, эти три будут с номерами 5, 6, 7 соответственно.
По умолчанию их номера будут опять 1, и, если не поменять номера, программа работать не будет.
- Еще я поменяла фоновый цвет. Это можно сделать в свойствах, вот здесь:
Еще раз напоминаю о необходимости контролировать имя (верхний зеленый прямоугольник на рисунке)
Смена цвета - BackColor - нажать на треугольник, чтоб выпал выпадающий список.
- Вкладка System предложит штук 8 системных цветов, которые нравятся компьютеру.
- Вкладка Palette позволит выбрать из 40 системных цветов.
Создаем кнопку "Далее", проверяем, чтоб её имя содержало следующий по счету для кнопок номер. У меня это - 2. Настраиваем "Свойства" - цвет, размер текста, выравнивание...
Выбрав кнопку, нажимаем "Просмотреть код" и между уже готовыми строками начала и конца кода вставляем следующее:
Private Sub CommandButton2_Click()
If OptionButton5.Value = True Then
Po = Po + 1
End If
Vz = Vz + 1
OptionButton5.Value = False
OptionButton6.Value = False
OptionButton7.Value = False
SlideShowWindows(1).View.Next
End Sub
Смотрите: от предыдущего кода отличается тем, что:
- Мы не обнуляем переменные
- В блоке проверки условия вписан номер переключателя, соответствующего правильному ответу на этом слайде
- В блоке очистки количество и номера очищаемых переключателей соответствует тем, что есть на слайде.
Создадим еще один слайд - ну, чтоб было, на что отвечать. У меня вот такой:
Поскольку на предыдущих слайдах у меня было 7 переключателей и 2 кнопки "Далее", то эти переключатели имеют номера 8 и 9, а кнопка - номер 3.
Программа для этой кнопки точно такая же (за исключением номеров и количества переключателей) как на предыдущем слайде:
Private Sub CommandButton3_Click()
If OptionButton8.Value = True Then
Po = Po + 1
End If
Vz = Vz + 1
OptionButton8.Value = False
OptionButton9.Value = False
SlideShowWindows(1).View.Next
End Sub
А теперь давайте всё-таки посчитаем итоговый результат!
Итоговый слайд будет выглядеть так:
1. Слова в верхней части слайда - это просто текст. "Вставка" - "Надпись" - настроить размер шрифта и жирность.
2. ВНИМАНИЕ! Белые окошки - новый для нас элемент - Label (Подпись)
Необходимое отступление
В предыдущей работе мы использовали соседний инструмент - "Надпись". А теперь используем "Подпись". В чем разница?
В "Надпись" пишет человек. А компьютер оттуда ЧИТАЕТ.
В "Подпись" компьютер ПИШЕТ.
Отступление закончено.
Растянули 4 окошка? Настройте им свойства, чтоб красиво все писалось в запущенной презентации. "Свойства" - шрифты, выравнивание... вы это умеете уже.
Создаем две кнопки:
"Показать результат" - у меня это кнопка 4 в презентации, т.е. её Name - CaptionButton4
"Завершить работу" - это кнопка 5 (у меня, у Вас может быть другой номер, если вы задали не 3 вопроса, а 10)
Давайте напишем программу для кнопки "Показать результат".
При нажатии на эту кнопку будут выполняться следующие действия:
- В окно Label1 будет выведено итоговое количество заданных вопросов - значение переменной Vz.
Label1.Caption = Vz
- В окно Label2 будет выведено итоговое количество правильных ответов - значение переменной Po.
Label2.Caption = Po
- В окно Label3 будет выведен процент правильных ответов. Его надо сначала посчитать:
Pro = Po / Vz * 100 - количество правильных ответов поделить на количество вопросов умножить на 100
А потом полученое число вывести в окно Label3 и прицепить к числу значок процента.
Label3.Caption = Pro & "%"
Теперь надо отреагировать на итог теста.
If Pro > 85 Then
Label4.Caption = "Молодец!"
End If
Если итоговый процент выше 85% - тестируемый молодец. Напишем ему об этом в Label4
If ((Pro > 60) And (Pro < 86)) Then
Label4.Caption = "Неплохо!"
End If
Если итоговый процент выше 60% но меньше 86% (меньше либо равен 85%) - тестируемый неплохо прошел тест. Напишем ему об этом в Label4
И так далее.
Понятно, что проценты вы можете изменять под свои нужды, как и реакции. Вместо слов можно выводить оценку.
Необходимо учитывать, что если вы ограничитесь одним условием при проверке, например, напишите только нижнюю границу:
Pro>85...
Pro>60...
Система будет продолжать работать, но срабатывать будет не всегда верно. Смотрите:
У меня - 100%. Сначала мне написали "Молодец!", а потом сработало короткое условие: 100% больше и 60% тоже, поэтому оценку мне снизили. Обидно!
Поэтому пишите условие, начиная со второго, ограничивая каждую реакцию процентами с двух сторон.
В итоге полный код для кнопки "Показать результат" выглядит так:
Private Sub CommandButton4_Click()
Label1.Caption = Vz
Label2.Caption = Po
Pro = Po / Vz * 100
Label3.Caption = Pro & "%"
If Pro > 85 Then
Label4.Caption = "Молодец!"
End If
If ((Pro > 60) And (Pro < 86)) Then
Label4.Caption = "Неплохо!"
End If
If ((Pro > 40) And (Pro < 61)) Then
Label4.Caption = "Так себе..."
End If
If Pro <= 40 Then
Label4.Caption = "Отвратительно!"
End If
End Sub
Пробелы между строками поставлены для Вашего удобства. Они никак не влияют на работу программы.
Что должна сделать кнопка 5 - "Завершить работу"?
Не только завершить работу, но и убрать за предыдущим клиентом - очистить все окошки. поэтому код будет такой:
Private Sub CommandButton5_Click()
Label1.Caption = ""
Label2.Caption = ""
Label3.Caption = ""
Label4.Caption = ""
SlideShowWindows(1).View.Exit
End Sub
Посмотрите внимательно на предпоследнюю строку.
Если после последней точки стоит слово Next, то компьютер будет пытаться перейти на следующий слайд, которого у нас нет. Как мы знаем, в некоторых системах при такой ошибке опять запускается первый слайд.
Поэтому мы пишем слово Exit и выходим из презентации (или демонстрации, если вы сохранили все правильно).