
用EXCEL制作模拟考试系统.doc
8页1.建立题库翻开E*cel 2021,建立“模拟考试系统-出题测试版〞翻开此工作簿,建立“单项选择题〞工作表(如图1),在A2输入公式=ROW()-1&"."以自动生成序号,在D2输入=IF(C2=",",RAND()),选中A2:D2拖动向下填充几百行按住Ctrl键单击“单项选择题〞工作表标签拖动复制出两份,分别重命名为“多项选择题〞〔如图2〕、“判断题〞〔如图3〕,分别输入题目和答案,按Alt+回车键换行请注意以下提示:1、以上3个工作表,在B列输入单项选择题题目〔样式随意,但一道题只能占一个单元格〕,在C列输入对应考题的答案,答案输入时注意不要有多余字符2、“多项选择题〞工作表的答案必须按ABCD的顺序填写,例如答案ABD,不能写ADB、BAD、BDA、DAB、DBA,答错、少答和多答均不得分;“判断题〞工作表的答案只能有两种,此题按“正确〞和“错误〞作为答案,其他形式如“对〞和“错〞、“√〞和“×〞也可以3、题库中题目数量根据实际情况而定,多多益善本例中题库数目为单项选择题60道、多项选择题50道、判断题45道图1图2图32.建立考生新建“考生〞工作表,在A、B、C列分别输入序号、号、考生,选中B列在名称框中输入“考号〞,回车确定把B列命名为考号(如图4)。
完成后可在名称管理器看到名字为“考号〞的名称,引用位置为“考生〞工作表的B列图43.设计试卷建立“试卷〞工作表,按需要设置试卷,序号生成方式如题库序号单项选择题30题(A5:C34),多项选择题40(A36:C75),判断题30题(A77:C106)在B4输入“单项选择题〔每题1分〕〞,在B35输入“多项选择题〔每题1分,错、漏、多项选择均不得分〕〞,在B76输入“判断题〔每题1分〕〞用“自选图形/根本形状〞中的棱台画一个按钮,选中在名称框中输入“出题按钮〞4字回车,把它命名为“出题按钮〞再右击此按钮选择“添加文字〞,在按钮上输入“出题〞2字同样再画一个按钮,把它命名为“评分按钮〞,添加文字“评分〞如图5)图54.显示题目〔如图6〕在B5输入公式=INDIRECT("单项选择题!R"&ROW()-3&"C"&COLUMN(),0),复制到B5:C34〔可拖动A5填充〕在B36输入公式=INDIRECT("多项选择题!R"&ROW()-34&"C"&COLUMN(),0)并复制到B36:C75在B77输入公式=INDIRECT("判断题!R"&ROW()-75&"C"&COLUMN(),0)并复制到B77:C106。
在E5单元格输入公式=IF(D5=",0,IF(D5=C5,$G$2,0)),向下填充到E34,这公式用来判断如果D5中的答案与C4的标准答案一致就得1分否则为0分,其中G2单元格数值为1同理,在E36单元格输入公式=IF(D36=",0,IF(D36=C36,$H$2,0)),向下填充到E75;在E77单元格输入公式=IF(D77=",0,IF(D77=C77,$I$2,0)),向下填充到E106可通过更改G2、H2、I2单元格的数值来更改分值B5的公式表示对单项选择题工作表中同列、行数差3的单元格(B2)的引用,公式中使用了R1C1格式的单元格编号,其中3、34、75是由三种题型的第一题所在的行号减2得来这公式实现的是绝对位置引用,即不管在单项选择题工作表中进展插入、删除行或排序,B5显示的始终都是你从单项选择题B2中直接看到的容因此B5:C34、B36:C75、B77:C106三个区域将分别与相应题库中最前面的30(或40)题的容保持一致图65.答案限制选中单项选择题答题区D5:D34单击“数据/有效性〞〔快捷键ALT+D→L〕,在“允许〞中选择“序列〞,选中“提供下拉箭头〞复选项,在“来源〞中输入“A,B,C,D〞,不含引号且其中逗号为半角格式(如图7)。
切换到“出错警告〞选项卡,输入错误信息为“只能输入A、B、C、D中的一项,其他任何符号或空格均为非法〞,选中“输入无效数据时显示警告〞复选项,选择样式为“停顿〞(如图8),确定完成设置图7图8同样对多项选择题答题区D36:D75,判断题答题区D77:D106设置数据有效性,只是“来源〞要分别换成“A,B,C,D,B,AC,AD,BC,BD,CD,ABC,ACD,BCD,ABCD〞和“正确,错误〞 多项选择题的“出错警告〞一定要改成“ 必须按ABCD的顺序输入多项选择项,否则无确评分〞〔如图9到如图11〕图9图10图116.号验证 选中“试卷〞工作表中要输入号的D2单元格,单击“数据/有效性〞,在“允许〞中选择“系列〞,取消“提供下拉箭头〞复选项,在“来源〞中输入=INDIRECT("考号")〔如图12〕切换到“出错警告〞选项卡,输入错误信息为“你输入的号并不存在,请重新输入〞,选中“输入无效数据时显示警告〞,并设置样式为“停顿〞〔如图13〕图12图13在F2单元格输入公式=IF(D2=",",VLOOKUP(D2,考生!$B:$C,2,FALSE)),在D2单元格输入号后会自动显示考生。
〔如图14〕图147.随机抽题右击“出题〞按钮,选择“指定宏〞,在弹出窗口中,输入宏名为“出题〞,位置选择当前工作簿,单击“新建〞按钮,复制如下代码粘贴到框,结果如图15,保存时将文件另存为启用宏的.*lsm格式Sub 出题() If Range("D2").Value = 0 Then 提示 = MsgBo*("请先输入号") GoTo 重来 End If '如果D2为空则弹出提示要求输入号并直接跳到后面的"重来:"处 Sheets("单项选择题").Range("A:D").Sort Key1:=Sheets("单项选择题").Range("D2"), Order1:=*lAscending, Header:=*lGuess Sheets("多项选择题").Range("A:D").Sort Key1:=Sheets("多项选择题").Range("D2"), Order1:=*lAscending, Header:=*lGuess Sheets("判断题").Range("A:D").Sort Key1:=Sheets("判断题").Range("D2"), Order1:=*lAscending, Header:=*lGuess '这三行分别是对单项选择、多项选择和判断题工作表的A:D区域按D列随机数升序排序。
Columns("B:B").Rows.AutoFit '对B列设置最适合行高,以完整显示题目 Range("D5").Select '定位到D5以便输入答案 ActiveSheet.Shapes("出题按钮").Visible = False '隐藏出题按钮以防重复选题 ActiveSheet.Shapes("评分按钮").Visible = True '显示评分按钮重来: End Sub图15试卷中的题目总是显示各题库最前面的N题,而在此对各题库按随机数进展随机排序后最前面的N题自然是随机的,也就相当于是随机抽题了8.成绩记录表新建“成绩记录〞工作表(如图16),在A2输入公式=NOW(),并选中A列右击从“设置单元格格式〞中设置为日期格式以显示当前时间在B2输入公式=试卷!D2和C2输入公式=试卷!F2以显示相应数据D2输入公式=SUM(E2:G2)对后面三个得分进展合计,E2、F2、G2则分别输入公式=SUM(试卷!E5:E34)、=SUM(试卷!E36:E75)、=SUM(试卷!E77:E106)分别对相应题型得分进展合计。
图169.评分和记录保存右击“评分〞按钮,选择“指定宏〞,输入宏名“评分〞,位置选择当前工作簿,单击“新建〞按钮,复制如下代码粘贴到框,结果如图17:Sub 评分() Sheets("成绩记录").Rows("3:3").Insert Shift:=*lDown '在成绩记录工作表第3行前插入一行 Sheets("成绩记录").Rows("2:2").Copy '复制成绩记录工作表第2行 Sheets("成绩记录").Range("A3").PasteSpecial Paste:=*lPasteValues '以数值方式粘贴到成绩记录工作表A3 得分 = MsgBo*("最终得分" & Range("成绩记录!D2").Value & " 其中:单项选择题" & Range("成绩记录!E2").Value & "、多项选择题" & Range("成绩记录!F2").Value & "、判断题" & Range("成绩记录!G2").Value, , "评分结果") '弹出信息框显示成绩记录!D2、E2、F2、G2的数据,标题为"评分结果" Range("D2,D5:D34,D36:D75,D77:D106").ClearContents '去除试卷工作表中输入的容 Sheets("试卷").Rows("3:500").RowHeight = 0 Sheets("成绩记录").Rows("2:2").RowHeight = 0 '设置题目区行高为0,以隐藏所有题目 ActiveSheet.Shapes("出题按钮").Visible = True ActiveSheet.Shapes("评分按钮").Visible = False '显示出题按钮,隐藏评分按钮 ActiveWorkbook.Save '保存 End Sub图1710.其他设置选中A4单击“窗口/冻结空格〞以始终显示1:3行的标题和按钮。
右击C、E列选择隐藏为答题区以外单元格设置填充色以示区别,把评分按钮重叠到出题按钮上(如图18)图18选中D5:D34右击选择“设置单元格格式〞,在“保护〞选项卡中单击取消“锁定〞选项,对于同样需要添写的D2,D36:D75,D77:D106区也同样取消锁定设置〔如图19〕然后单击“工具/保护/保护工作表〞,在中间“允许此工作表所有用户进展〞列表中只选中“选定未锁定单元格〞和“设置行格式〞两个选项,输入密码(如图20),单击确定把工作表保护起来,这样考生就无法修改试题等相应单元格了单击评分以隐藏所有题目,同时显示出题按钮,把文件另存为“模拟考试系统-考生测试版.*lsm〞,退出如图19如图20系统维护1.隐藏工作表选中除“试卷〞工作表除外的其他工作表,右击选择隐藏,以免考生看到〔如图21〕图212.保护VBA代码右击“试卷〞工作表,选择“查看代码〞,选中VBAProject(模拟考试系统-考生测试版.*lsm),右击,选择“VBAProject 属性〞,在“保护〞选项卡中选中“查看时锁定工程〞,并输入密码(如图22),确定,保存文档后退出关闭文档后再重新翻开,查看代码需输入密码,这样任何人没有密码就别想修改这些代码了。
图223.保护工作簿为防止考生修改,在“审阅〞选项卡中选中“保护工作簿〞,勾选“构造〞和“窗口〞选项,输入密码后确定(如图23)完成以上三步后,在没有密码的前提下,考生只能输入号和进展答题,不能取消隐藏工作表、取消隐藏*列或*行、查看和修改VBA代码图23如何考试翻开“模拟考试系统-考生测试版.*lsm〞就只有一“试卷。
