Программный код приложения
Option Explicit 'Описание переменных уровня модуля Dim uf As Object ' объект Форма UserForm1 Dim nQuest As Integer ' количество тестовых заданий всего Dim cQuest As Integer ' количество выполненных тестовых заданий Dim nQuestP As Integer ' количество правильно выполненных тестовых заданий Dim iQuest As Integer ' номер строки, содержащей очередной вопрос Dim nfio As Integer ' количество студентов в группе ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Добавление в ComboBox1 опции(наименование группы с листа "Группы") Sub Старт() Dim row As Integer, n As Integer Worksheets("Группы").Select ' выбор листа "Группы" n = 0 ' количество групп+1(заголовок "Группы") Do While Cells(n + 1, 1) <> "" n = n + 1 Loop Set uf = UserForm1 ' объект присвоить переменной For row = 2 To n ' заголовок "Группы" не включается ' Добавление опции (наименование группы) uf.ComboBox1.AddItem Sheets("Группы").Cells(row, 1) Next row uf.Label2.Enabled = False ' недоступна Надпись "ФИО" uf.Label3.Enabled = False ' недоступна Надпись "Раздел" uf.ComboBox2.Enabled = False ' недоступно Комбинированное поле "ФИО" uf.ComboBox3.Enabled = False ' недоступно Комбинированное поле "Раздел" uf.Frame1.Enabled = False ' недоступна Рамка "Тестовые задания" uf.Label4.Enabled = False ' недоступна Надпись "Вопрос" uf.TextBox1.Enabled = False ' недоступно Текстовое поле "Вопрос" uf.OptionButton1.Enabled = False ' недоступен Переключатель Ответ 1 uf.OptionButton2.Enabled = False ' недоступен Переключатель Ответ 2 uf.OptionButton3.Enabled = False ' недоступен Переключатель Ответ 3 uf.OptionButton4.Enabled = False ' недоступен Переключатель Ответ 4 uf.CommandButton1.Enabled = False ' недоступна Кнопка "Далее" uf.CommandButton2.Enabled = False ' недоступна Кнопка "Выход" uf.Show ' загрузить Форму UserForm1 End Sub –––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
' Выбор Группы и добавление в ComboBox2 опции (ФИО с листа АД-07Д1,...) Private Sub ComboBox1_Change() Dim row As Integer ' ComboBox1.Value = название листа(наименование группы АД-07Д1,...) Worksheets(ComboBox1.Value).Select nfio = 0 ' число студентов +1(заголовок ФИО) Do While Cells(nfio + 1, 1) <> "" nfio = nfio + 1 Loop For row = 2 To nfio ' заголовок ФИО не включается ' Добавление опции uf.ComboBox2.AddItem Sheets(ComboBox1.Value).Cells(row, 1) Next row uf.Label2.Enabled = True ' доступна Надпись "ФИО" ' Доступно Комбинированное поле для выбора ФИО uf.ComboBox2.Enabled = True End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Выбор ФИО и добавление в ComboBox3 опции (название раздела с листа "Разделы") Private Sub ComboBox2_Change() Dim row As Integer, n As Integer Worksheets("Разделы").Select n = 0 ' число тем +1(заголовок "Разделы") Do While Cells(n + 1, 1) <> "" n = n + 1 Loop For row = 2 To n ' заголовок "Разделы" не включается ' Добавление опции(номер и наименование раздела) uf.ComboBox3.AddItem Sheets("Разделы").Cells(row, 1) Next row uf.Label3.Enabled = True ' доступна Надпись "Раздел" ' Доступно Комбинированное поле для выбора Раздела uf.ComboBox3.Enabled = True End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Выбор Раздела и вызов Первого вопроса Private Sub ComboBox3_Change() uf.Frame1.Enabled = True ' доступна Рамка "Тестовые задания" uf.Label4.Enabled = True ' доступна Надпись "Вопрос" uf.TextBox1.Enabled = True ' доступно Текстовое поле для вывода Вопроса uf.CommandButton2.Enabled = True ' доступна Кнопка "Выход" NQuestion ' процедура вычисления количества тестовых заданий uf.Label7.Caption = nQuest ' заданий всего Question (1) ' процедура вызова вопроса (1-номер строки с вопросом) uf.Label8.Caption = cQuest ' номер текущего задания uf.Label1.Enabled = False ' недоступна Надпись "Группы" uf.Label2.Enabled = False ' недоступна Надпись "ФИО"
uf.Label3.Enabled = False ' недоступна Надпись "Раздел" ' Недоступно Комбинированное поле для выбора Группы uf.ComboBox1.Enabled = False ' Недоступно Комбинированное поле для выбора ФИО uf.ComboBox2.Enabled = False ' Недоступно Комбинированное поле для выбора Раздела uf.ComboBox3.Enabled = False End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Подсчет числа правильных ответов и вызов следующего задания Private Sub CommandButton1_Click() Dim i As Integer ' Подсчет числа правильно выполненных заданий If uf.OptionButton1.Value = True Then ' +1, если ответ 1 отмечен как верный nQuestP = nQuestP + Cells((cQuest - 1) * 5 + 2, 1) End If If uf.OptionButton2.Value = True Then ' +1, если ответ 2 отмечен как верный nQuestP = nQuestP + Cells((cQuest - 1) * 5 + 3, 1) End If If uf.OptionButton3.Value = True Then ' +1, если ответ 3 отмечен как верный nQuestP = nQuestP + Cells((cQuest - 1) * 5 + 4, 1) End If If uf.OptionButton4.Value = True Then ' +1, если ответ 4 отмечен как верный nQuestP = nQuestP + Cells((cQuest - 1) * 5 + 5, 1) End If ' Вызов следующего задания ' Если все задания выполнены, то название кнопки "Далее" изменяется на "Завершить" If CommandButton1.Caption <> "Завершить" Then iQuest = cQuest * 5 + 1 ' номер строки, содержащей очередной вопрос Question (iQuest) ' процедура вызова задания (iQuest-номер строки с вопросом) Else ' все задания выполнены uf.TextBox1.Text = " " uf.Label4.Enabled = False ' недоступна Надпись "Вопрос" uf.TextBox1.Enabled = False ' недоступно Текстовое поле с Вопросом uf.OptionButton1.Enabled = False ' недоступен Переключатель Ответ 1 uf.OptionButton2.Enabled = False ' недоступен Переключатель Ответ 2 uf.OptionButton3.Enabled = False ' недоступен Переключатель Ответ 3 uf.OptionButton4.Enabled = False ' недоступен Переключатель Ответ 4 uf.CommandButton1.Enabled = False ' недоступна Кнопка "Завершить" End If End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Вызов тестового задания Sub Question(ByVal iRow As Integer) Dim path_bmp As String, file_bmp As String ' Номер темы = номеру листа Worksheets(Trim(Str(ComboBox3.ListIndex + 1))).Select If Cells(iRow, 1) <> Trim(" ") Then ' Путь к папке, содержащей графические файлы(Рис1.bmp, Рис2.bmp и т.д.)задания path_bmp = Trim(Cells(2, 4)) ' Полное имя графического файла file_bmp = path_bmp + "\" + Cells(iRow, 1) If Dir(file_bmp) <> "" Then uf.Image1.Picture = LoadPicture(path_bmp + "\" + Cells(iRow, 1)) Else MsgBox ("Нет графического файла " + file_bmp)
End If Else uf.Image1.Picture = LoadPicture() ' очистка графического поля End If ' Вопрос и ответы uf.TextBox1.Text = Cells(iRow, 3) ' вопрос uf.OptionButton1.Caption = Cells(iRow + 1, 3) ' ответ 1 uf.OptionButton2.Caption = Cells(iRow + 2, 3) ' ответ 2 uf.OptionButton3.Caption = Cells(iRow + 3, 3) ' ответ 3 uf.OptionButton4.Caption = Cells(iRow + 4, 3) ' ответ 4 uf.OptionButton1.Enabled = True ' доступен Переключатель Ответ 1 uf.OptionButton2.Enabled = True ' доступен Переключатель Ответ 2 uf.OptionButton3.Enabled = True ' доступен Переключатель Ответ 3 uf.OptionButton4.Enabled = True ' доступен Переключатель Ответ 4 uf.OptionButton1.SetFocus ' фокус на Переключателе Ответ 1 ' Ответ не выбран uf.OptionButton1.Value = False ' удаление метки Переключателя Ответ 1 uf.OptionButton2.Value = False ' удаление метки Переключателя Ответ 2 uf.OptionButton3.Value = False ' удаление метки Переключателя Ответ 3 uf.OptionButton4.Value = False ' удаление метки Переключателя Ответ 4 ' Недоступна Кнопка "Далее" пока не выбран ответ uf.CommandButton1.Enabled = False cQuest = cQuest + 1 ' количество выполненных тестовых заданий uf.Label8.Caption = cQuest ' номер текущего задания If cQuest = nQuest Then ' если выполняется последнее задание ' Переименование Кнопки "Далее" uf.CommandButton1.Caption = "Завершить" End If End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Вычисление количества тестовых заданий Sub NQuestion() ' Номер Раздела = номеру листа Worksheets(Trim(Str(ComboBox1.ListIndex + 1))).Select cQuest = 0 ' количество выполненных тестовых заданий nQuestP = 0 ' количество правильно выполненных тестовых заданий nQuest = 0 ' количество тестовых заданий всего Do While Cells(nQuest + 1, 3) <> "" nQuest = nQuest + 1 Loop nQuest = nQuest / 5 End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Кнопка "Выход" с сохранением результатов тестирования Private Sub CommandButton2_Click() Dim row As Integer Worksheets(ComboBox1.Value).Select ' лист с наименованием группы ' Вывод результатов тестирования в строку с ФИО студента For row = 1 To nfio ' Если ComboBox2.Text=ФИО If uf.ComboBox2.Text = Sheets(ComboBox1.Value).Cells(row, 1) Then Cells(row, 2) = nQuest ' количество тестовых заданий всего Cells(row, 3) = cQuest ' количество выполненных тестовых заданий
Cells(row, 4) = nQuestP ' количество правильных ответов Cells(row, 5) = "" ' очистка ячеек с оценкой по шкале 0-100 баллов Cells(row, 5) = Round(nQuestP / nQuest * 100) ' оценка округляется End If Next row Unload uf End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Сделать доступной кнопку "Далее" после выбора переключателя Ответ 1 Private Sub OptionButton1_Click() uf.CommandButton1.Enabled = True End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Сделать доступной кнопку "Далее" после выбора переключателя Ответ 2 Private Sub OptionButton2_Click() uf.CommandButton1.Enabled = True End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Сделать доступной кнопку "Далее" после выбора переключателя Ответ 3 Private Sub OptionButton3_Click() uf.CommandButton1.Enabled = True End Sub ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– ' Сделать доступной кнопку "Далее" после выбора переключателя Ответ 4 Private Sub OptionButton4_Click() uf.CommandButton1.Enabled = True End Sub
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|