Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите создать тест в VBA exel (http://forum.oszone.net/showthread.php?t=300008)

Нася 19-05-2015 21:08 2509143

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

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

Iska 19-05-2015 22:35 2509178

Цитата:

Цитата Нася
но как случайным образом генерировать вопросы? »

Скрытый текст
Код:

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 2510487

Спасибо огромное) Вы очень помогли

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


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

Iska 23-05-2015 15:47 2510572

Цитата:

Цитата Нася
Один момент не получается »

Нася, покажите прочие моменты, которые получаются.

artemu88 24-04-2020 18:13 2918867

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

Iska 25-04-2020 00:07 2918902

artemu88, это у Вас вопрос или ответ был?


Время: 12:35.

Время: 12:35.
© OSzone.net 2001-