Создание простого тестового задания средствами VBA Excel на конкретном примере. Загрузка вопросов и ответов с помощью массивов. Выставление оценки за тест.
Описание тестового задания
Простое тестовое задание состоит из пяти вопросов с пятью вариантами ответов на каждый. Оценивается пройденный тест от 0 до 5 баллов в зависимости от количества правильных ответов.
Пользователь выбирает на каждый вопрос один ответ из пяти предложенных и нажимает кнопку «Оценить». Результат выполнения тестового задания выводится в информационном окне MsgBox.
Форма и элементы управления
На пользовательской форме VBA Excel расположены пять элементов управления Frame (рамка) для размещения вопросов. В каждой рамке расположены по пять элементов OptionButton (переключатель) для размещения и выбора вариантов ответа.
Рамки нужны для объединения переключателей в группы, в которых только один элемент OptionButton из группы может иметь значение True. Это облегчает пользователю перевыбор ответа.
Кнопка CommandButton1 используется для запуска процедуры расчета оценки за пройденный тест.
Загрузка вопросов и ответов
Вопросы и варианты ответов присваиваются массивам непосредственно в коде VBA Excel. Из массивов информация передается на пользовательскую форму элементам управления Frame и OptionButton.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Private Sub UserForm_Initialize() Dim arr1 As Variant, arr2 As Variant, i As Byte 'Присваиваем список вопросов массиву arr1 arr1 = Array("Сколько лапок у мухи?", "На что меняют шило?", _ "5! - это сколько?", "Кто может стать мужем лосихи?", _ "Что в списке цветов лишнее?") 'Присваиваем вопросы заголовкам рамок 'из массива arr1 For i = 1 To 5 Controls("Frame" & i).Caption = arr1(i - 1) Next 'Присваиваем варианты ответов массиву arr2 arr2 = Array("2", "4", "6", "8", "10", "на вилы", "на мыло", _ "на силу", "на рыло", "на рынду", "24", "48", "60", "120", _ "240", "Вепрь", "Упырь", "Бугай", "Мизгирь", "Сохатый", _ "Сенполия", "Физалия", "Циния", "Пеларгония", "Аквилегия") 'Присваиваем варианты ответов надписям 'переключателей из массива arr2 For i = 1 To 25 Controls("OptionButton" & i).Caption = arr2(i - 1) Next CommandButton1.Caption = "Оценка" Me.Caption = "Тестовое задание" End Sub |
Выставление оценки за тест
Для расчета оценки за пройденный тест используется свойство Value элемента управления OptionButton, которое равно True, если переключатель выбран. В тексте процедуры свойство Value не указано, так как оно является для OptionButton свойством по умолчанию.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Private Sub CommandButton1_Click() Dim arr3 As Variant, n As Byte, i As Byte 'Присваиваем порядковые номера правильных 'ответов массиву arr3 arr3 = Array("3", "7", "14", "20", "22") 'Считаем количество правильных ответов For i = 1 To 5 If Controls("OptionButton" & arr3(i - 1)) Then n = n + 1 End If Next 'Выводим результат в MsgBox MsgBox "Ваша оценка: " & n End Sub |
Предложенное здесь простое тестовое задание в VBA Excel можно усовершенствовать, организовав загрузку вопросов и ответов в массивы с активного рабочего листа. Тогда на разных листах можно будет создать различные варианты тестов и запускать их одной программой, выбрав нужный лист.