VBA开发考试系统的方法初探

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VBA开发考试系统的方法初探
作者:王璐烽
来源:《电子技术与软件工程》2015年第14期
VBA作为针对应用而设计的程序设计语言,其实用性是其它程序设计语言无法比拟的,而标准化考试(客观题考试)又无须更多人工参与,所以运用Excel VBA完成考试系统的随机组题和自动评分,简化考试的繁杂步骤,自动完成整个考试过程。

【关键词】VBA 考试系统方法
现在许多考试客观题占了很大比例,如果人工组题、阅卷劳神费力,效率还低,但如果开发网络在线考试系统,费用高昂,周期长,维护不便,并且要求网络畅通,总之要实现可谓困难重重。

那么能不能把教师从繁杂而重复的任务中解放出来,可以,VBA就可以高效、简易地减轻教师负担。

1 再认识EXCEL
Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。

但一般用户只知道它是一个制表软件,并且在处理格式方面远不及Word表格功能强大,稍熟悉的用户对EXCEL函数、计算、数据处理功能往往还是赞不绝口,Excel中大量的公式函数可以应用选择,使用Excel可以执行计算,分析信息并管理电子表格,对数据信息列表进行数据资料图表制作,实现许多方便的功能。

不仅如此,Excel(包括其它office的组件)还具有程序设计功能,对一般用户来讲,这一点可以称得上鲜为人知,其VBA语言和其他开发语言一样,可以提供强大功能,开发任意类型的信息系统;更专业方面,它还具有数据库功能,可以实现数据库的基本管理。

2 考试系统初步构想
基本功能:
(1)老师可随时建立、修改、完善题库,能够随机抽题,保证每个考生每次的题目不雷同,按规定格式组卷,试卷具有防修改功能
(2)考生只能在指定区域答题,保护区域只能阅读,不能选定,鼠标、光标都不能驻足,答题区域尽量用下拉列表选择,保证数据完整性、有效性。

(3)考生交卷(自动交卷)后,文档完全锁定,保留提交(卷)标记
(4)保护评阅试卷密码,老师输入密码后,自动阅卷、评分,并给出评判和参考答案,保留阅卷标记
(5)已经阅卷的试卷,给出提示。

(6)定时器功能自动显示考试剩余时间,剩下5分钟进行提示,时间到点,自动交卷,自动保存关闭。

3 定时器的实现
定时器(Timer)在C#、VB等系统开发语言中是极其普遍的控件,而VBA恰恰没有定时器。

但功能可由Application对象的OnTime方法来实现,OnTime安排一个过程在将来的特定时间运行(既可以是具体指定的某个时间,也可以是指定的一段时间之后)。

3.1 两种用法
(1)特定时间执行某一过程,如Application.OnTime TimeValue("12:00:00"),"displaytime",就是12点执行displaytime过程。

(2)特定时间段后执行某一过程,用法为:现在时间+时间段,如:Now + TimeValue ("00:00:01"),本质上都特定时间。

3.2 两点说明
(1)递归调用因为OnTime执行某一过程后不能自动重启,因此执行的过程必须包含重启语句,实现递归调用。

(2)中止方法既然递归调用,那就不能自动停止,因此必须有条件退出执行过程。

基于上面两点,现通过具体过程进行说明:
过程设定D2单元格显示时间,初始化为1小时,倒计时每秒显示,过程框架如下:
Public Sub displaytime()
Range("D2").Value = Range("D2").Value - TimeValue("00:00:01")
'在D2里面显示剩余的时间,这个动作每隔一秒会执行一次,因为每隔一秒displaytime就会被调用一次。

nTime = Now + TimeValue("00:00:01") '设定下一秒时间
If Range("D2").Value TimeValue("00:00:00") Then '有条件重启和退出过程
Application.OnTime nTime, "ThisWorkbook.displaytime",, True
Else
'完成自动提交后的工作,如:设定状态:已提交;显示考试日期、开始时间、结束时间、用时多少、删除提交按钮、锁定文档、保存文档等
Response = MsgBox("请按“考号+姓名”方式给文件改名,并上传给老师…… ", 0, "提示")
Application.Quit'退出Excel
End If
End Sub
必须说明,displaytime是ThisWorkbook对象的通用过程,不能自动启动,通过ThisWorkbook的Workbook_Open()启动,因此Open()必须有包含displaytime启动语句。

Private Sub Workbook_Open()
'其它语句、功能……
displaytime'首次启动
End Sub
参考文献
[1]李政.VBA应用基础与实例教程[M].北京:国防工业出版社,2009:313-315.
[2]丁士锋.ExcelVBA标准教程[M].北京:化学工业出版社,2010.
作者单位
重庆工业职业技术学院重庆市 404100。

相关文档
最新文档