Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Помогите создать тест в VBA exel

Ответить
Настройки темы
VBA - Помогите создать тест в VBA exel

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 21:08, 19-05-2015

 

Ветеран


Contributor


Сообщения: 26220
Благодарности: 7629

Профиль | Отправить PM | Цитировать


Цитата Нася:
но как случайным образом генерировать вопросы? »
Скрытый текст
Код: Выделить весь код
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

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

Отправлено: 22:35, 19-05-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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


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

Отправлено: 08:47, 23-05-2015 | #3


Ветеран


Contributor


Сообщения: 26220
Благодарности: 7629

Профиль | Отправить PM | Цитировать


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

Отправлено: 15:47, 23-05-2015 | #4


Пользователь


Сообщения: 82
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar студенты.rar
(17.4 Kb, 0 просмотров)

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

Последний раз редактировалось artemu88, 24-04-2020 в 18:19.


Отправлено: 18:13, 24-04-2020 | #5


Ветеран


Contributor


Сообщения: 26220
Благодарности: 7629

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:07, 25-04-2020 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Помогите создать тест в VBA exel

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - VBA Excel помогите решить Мария74 Программирование и базы данных 1 19-02-2011 12:58
VBA - [решено] Помогите решить. VBA zena Программирование и базы данных 12 20-12-2010 10:39
VBA - помогите решить задачку VBA vivat Программирование и базы данных 1 25-11-2010 11:52
Разное - помогите решить задачу по поиску решения Exel vivat Программирование и базы данных 0 23-11-2010 22:03
VBA - помогите решить задачку Vba + Excel hellp123 Программирование и базы данных 3 14-03-2009 01:15




 
Переход