Показать полную графическую версию : Помогите создать тест в VBA exel
Задание состоит в следующем: Создать на VBA тест, который запрашивает у пользователя фамилию и задает 12 произвольных примеров (генерируемых случайным образом) на проверку таблицы умножения. Фамилия тестируемого и оценка за тест выводятся в свободные ячейки рабочего листа.
Как запросить фамилию ясно, но как случайным образом генерировать вопросы?
но как случайным образом генерировать вопросы? »
Option Explicit
Sub Sample()
Dim strName As String
Dim i As Integer
Dim x1 As Integer
Dim x2 As Integer
Dim strAnswer As String
With ThisWorkbook.Sheets.Item(1)
.Range(.Cells.Item(1, 1), .Cells.Item(14, 4)).Clear
strName = InputBox("Enter your name:", "Enter your name")
With .Cells
.Item(1, 1).Value = strName
Randomize Timer
i = 1
Do
x1 = Int(9 * Rnd + 1)
x2 = Int(9 * Rnd + 1)
strAnswer = Trim(InputBox(x1 & " x " & x2 & " = ?", "Question #" & CStr(i)))
If IsNumeric(strAnswer) Then
.Item(i + 1, 1).Value = x1
.Item(i + 1, 2).Value = x2
.Item(i + 1, 3).Value = x1 * x2
.Item(i + 1, 4).Value = CInt(strAnswer)
If x1 * x2 = CInt(strAnswer) Then
.Item(i + 1, 4).Interior.ColorIndex = 4
Else
.Item(i + 1, 4).Interior.ColorIndex = 3
End If
i = i + 1
Else
If MsgBox("Need only digits." & vbCrLf & vbCrLf & "Try again?", vbYesNo + vbExclamation, "Need only digits") = vbNo Then
MsgBox "Test failed!", vbOKOnly + vbCritical, "Test failed"
Exit Do
End If
End If
Loop While i <= 12
.Item(i + 1, 1).Value = "Result: bla-bla-bla."
End With
End With
End Sub
Алгоритм расчёта оценки Вами не указан, добавляйте сами.
Спасибо огромное) Вы очень помогли
У меня есть еще один вопрос.
Задание:
Разработать программу, которая запрашивает у пользователя необходимые данные о поступающих студентах и создает на рабочем листе Excel базу данных студентов факультета. Названия полей базы данных: фамилия, оценка1, оценка2, решение о зачислении вводятся в ячейки A1:Е1 рабочего листа. Заполнение базы данных осуществляется в соответствующие ячейки строк 2, 3, … Данные о студенте вводятся на форме:
Фамилия – в текстовое поле;
оценки (по 5ти-бальной шкале)– указываются с помощью счетчика.
Решение о зачислении принимается с помощью кнопки и выводится в соответствующие ячейки. Проходной балл составляет 9 баллов.
Один момент не получается, как сделать чтобы при каждом новом вводе таблица продолжалась? Наверняка нужно через цикл,но я не могу сделать чтобы работала. Подскажите структуру, пожалуйста.
Один момент не получается »
Нася, покажите прочие моменты, которые получаются.
artemu88
24-04-2020, 18:13
Вот пример с таблицей, только вместо формы я использовал inputbox
Посмотрите.
Для перехода на последнюю заполненную ячейку использовал End(xlDown)
Для смещения по строкам использовал Offset(1,0) ' сместиться на строку ниже
artemu88, это у Вас вопрос или ответ был?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.