Войти

Показать полную графическую версию : Помогите создать тест в VBA exel


Нася
19-05-2015, 21:08
Задание состоит в следующем: Создать на VBA тест, который запрашивает у пользователя фамилию и задает 12 произвольных примеров (генерируемых случайным образом) на проверку таблицы умножения. Фамилия тестируемого и оценка за тест выводятся в свободные ячейки рабочего листа.

Как запросить фамилию ясно, но как случайным образом генерировать вопросы?

Iska
19-05-2015, 22:35
но как случайным образом генерировать вопросы? »
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

Алгоритм расчёта оценки Вами не указан, добавляйте сами.

Нася
23-05-2015, 08:47
Спасибо огромное) Вы очень помогли

У меня есть еще один вопрос.
Задание:
Разработать программу, которая запрашивает у пользователя необходимые данные о поступающих студентах и создает на рабочем листе Excel базу данных студентов факультета. Названия полей базы данных: фамилия, оценка1, оценка2, решение о зачислении вводятся в ячейки A1:Е1 рабочего листа. Заполнение базы данных осуществляется в соответствующие ячейки строк 2, 3, … Данные о студенте вводятся на форме:
Фамилия – в текстовое поле;
оценки (по 5ти-бальной шкале)– указываются с помощью счетчика.
Решение о зачислении принимается с помощью кнопки и выводится в соответствующие ячейки. Проходной балл составляет 9 баллов.


Один момент не получается, как сделать чтобы при каждом новом вводе таблица продолжалась? Наверняка нужно через цикл,но я не могу сделать чтобы работала. Подскажите структуру, пожалуйста.

Iska
23-05-2015, 15:47
Один момент не получается »
Нася, покажите прочие моменты, которые получаются.

artemu88
24-04-2020, 18:13
Вот пример с таблицей, только вместо формы я использовал inputbox
Посмотрите.
Для перехода на последнюю заполненную ячейку использовал End(xlDown)
Для смещения по строкам использовал Offset(1,0) ' сместиться на строку ниже

Iska
25-04-2020, 00:07
artemu88, это у Вас вопрос или ответ был?




© OSzone.net 2001-2012