Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Программный код приложения




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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...