【VBA研究】VBA做了个简单的试题生成工具 |
您所在的位置:网站首页 › excel题库随机生成试卷函数怎么做的 › 【VBA研究】VBA做了个简单的试题生成工具 |
作者:iamlasong 单位对新上岗的员工进行培训,培训结束后,需要进行考试,需要一个简单的考试系统,让新员工既可以自己练习,也可以进行测试,为此,我们做了一个题库,员工可以自己生成一套考题,测试自己的掌握程度,也可以集中起来进行考试,测试培训效果。 系统数据库很简单,主要有两个表,一个是题库,一个是成绩。 create table EMSAPP_TEST_QUESTION ( type CHAR(1), id NUMBER(4), question VARCHAR2(400), choice_a VARCHAR2(200), choice_b VARCHAR2(200), choice_c VARCHAR2(200), choice_d VARCHAR2(200), answer VARCHAR2(8), remark VARCHAR2(20) ); create table EMSAPP_TEST_RESULT ( city VARCHAR2(10), bureau_code VARCHAR2(40), bureau_name VARCHAR2(40), staff_code VARCHAR2(10), staff_name VARCHAR2(10), testdate DATE, score number(3) ); 1、界面 分两块,考试部分和试题录入修改部分,下图是考试部分,上半部分是历史成绩查询工具,下半部分是试题生成和答案提交,生成的试题分别放在不同的工作表中,做完题目后提交答案,系统给出分数,同时,给出对错。
2、生成试题 生成的试题和标准答案都放在相应的工作表中,以便核对答案。 ' 生成考试题 Public Sub get_question() ' On Error GoTo ErrMsg1: Dim i, j, k, tp, lineno As Integer Dim OraOpen As Boolean Dim RndNumber, TempRnd(20), Recno, Maxno As Integer Dim stName As String Worksheets("系统参数").Select For i = 7 To 11 If Len(Cells(i, 2)) < 3 Then msg = MsgBox("请填写完整揽投员信息后再生成试题!", vbOKOnly, "iamlaosong") Exit Sub End If Next i ActiveSheet.unprotect password = "iamlaosong" Cells(i, 2) = "" '清除以前的分数 ActiveSheet.protect password = "iamlaosong" Set cnn = CreateObject("ADODB.Connection") Set rst = CreateObject("ADODB.Recordset") sqls = "connect database" cnn.Open "Provider=msdaora;Data Source=dl580;User Id=emssxjk;Password=emssxjk;" OraOpen = True '成功执行后,数据库即被打开 'If OraOpen Then lineno = [D65536].End(xlUp).Row Else lineno = 0 '行数 Randomize (Timer) '初始化随机数生成器 '生成试题 For tp = 0 To 2 If tp = 1 Then Maxno = 20 stName = "单选" ElseIf tp = 2 Then Maxno = 20 stName = "多选" Else Maxno = 10 stName = "判断" End If sqls = "select count(*) from EMSAPP_TEST_QUESTION where type ='" & tp & "'" Set rst = cnn.Execute(sqls) Recno = rst(0) k = 1 Worksheets(stName).unprotect password = "iamlaosong" '工作表解锁以便写入题目和答案 Do While k |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |