巧用Excel论文_王章生

(浙江横店影视职业学院,浙江 东阳 322100)

摘要:计算机应用基础期末考试客观题有单选题、多选题与判断题,手工阅卷既费时又容易出错,利用Excel中的VBA制作一个简易的无纸化考试系统,可以实现计算机的自动批改,又快又准确,方便使用。

关键词:无纸化考试;VBA;自动批改

每个学期期末计算机应用基础考试除了操作题以外,还有一定数量的理论客观题,每次印刷试卷,考完后阅卷,都费时费财,有时数量一多还容易出现差错。利用Excel中的VBA可以制作选择题的简易考试系统,设计好了就只要修改题库内容和考试设置就可以了,实现了自动改卷,节省了时间与精力,真正实施机上考试。下面以简易的单选题考试设计为例,介绍实施过程,多选题与判断题的设计类似。

一、设计思路

在Excel 2010中设计两张表,一张为题库,一张为考试,设计好的题库要隐藏,考试表中有两个按钮:随机出题、交卷评分,学生输入学号与姓名后,实现随机在题库中抽题,在规定时间内答题,完成后可以自动评分,并不得重新考试。

二、考试界面

启动Excel 2010,把Sheet1更名为“考试”,Sheet2更名为“题库”,在“考试”中插入两个按钮“随机出题”、“交卷评分”,输入相应的内容,冻结第1~5行(图1)。

“题库”表中将题目按标题行“章、题号、答案、题干、A、B、C、D”格式8列录入到中,录入完毕后统计一下题目总数。在“考试”,在P2,P3内输入数据。

三、编写代码

调出“开发工具”,单击“Visual Basic”进入VBA编辑界面,单击工具栏上的“工程资源管理器”按钮,按F4显示“属性”窗口。

1、“随机出题”按钮代码

右击“工程资源管理器”窗口左边的“Microsoft Excel对象”,单击“插入”中的“模块”,按F4,在“属性”窗口中将名称“模块1”改为“随机出题”,并输入代码。

Sub Paper()

Dim i%, j%, k%, m%, n%, y%, ts As Integer

Dim StartEnd(1, 2) As Integer:Dim Th() As Integer

StartEnd(1, 1)=1:StartEnd(1, 2)=Cells(2, 16):ts=Cells(3, 16)

If ts=0 Then Exit Sub

ReDim Th(1, 1 To ts) As Integer

For i=1 To ts ’把起始题号、总题数分别写入StartEnd(1, 1), StartEnd(1, 2)中

A:

y=Int((StartEnd(1,2)-StartEnd(1,1)+1)*Rnd()+StartEnd(1,1))

Forj=1Toi

IfTh(1,j)=yThen

GoToA:

EndIf

Nextj:Th(1,i)=y

Nexti

Application.ScreenUpdating=False

Worksheets("题库").Columns("J:J").ClearContents

WithWorksheets("考试")

Cells(1,12)="":Range("A6:D3000").Select

Selection.ClearContents:Selection.Interior.ColorIndex=xlNone

Selection.NumberFormatLocal="@":Range("B6").Select

n=1:i=1:Application.ScreenUpdating=False

Fori=1Tots

Cells(i*5+1,1).Select:Selection.Interior.ColorIndex=8:Cells(i*5+1,2)=CStr(i)&"."

Cells(i*5+1,3)=Worksheets("题库").Cells(Th(1,i)+1,4):Cells(i*5+1,3).Select

Selection.Font.ColorIndex=5:Selection.Font.Bold=True

Cells(i*5+2,2)="A.":Cells(i*5+2,3)=Worksheets("题库").Cells(Th(1,i)+1,5)

Cells(i*5+3,2)="B.":Cells(i*5+3,3)=Worksheets("题库").Cells(Th(1,i)+1,6)

Cells(i*5+4,2)="C.":Cells(i*5+4,3)=Worksheets("题库").Cells(Th(1,i)+1,7)

Cells(i*5+5,2)="D.":Cells(i*5+5,3)=Worksheets("题库").Cells(Th(1,i)+1,8)

Worksheets("题库").Cells(i+1,10)=Worksheets("题库").Cells(Th(1,i)+1,3)

Nexti

Application.ScreenUpdating=True:Range("A6").Select

EndWith

End

2、“自动评分”按钮代码

如前类似,插入模块,命名为“自动评分”(subscore()),输入代码。

SubScore()

Application.ScreenUpdating=False

WithWorksheets("考试")

IfCells(6,2)=""Then

MsgBox"没有试卷,请单击【随机出题】按钮出题。":Range("A6").Select

ExitSub

EndIf

Dimh%,i%,m%,n%,tsAsInteger:DimDFAsSingle

ts=Cells(3,16):n=ts*5+5:DF=0

Form=6TonStep5

IfUCase(Cells(m,1))=Worksheets("题库").Cells(1+(m-1)/5,10)Then

DF=DF+1

EndIf

Nextm

Range("A6").Select:DF=DF/ts*100

EndWith

Worksheets("考试").UnprotectPassword:="123456"

Cells(1,12)=DF:Application.ScreenUpdating=True

MsgBox"本次考试共"&ts&"道题,满分为100分,你的得分是"&DF&"分。"

Range("A6").Select

Worksheets("考试").ProtectPassword:="123456"

End

EndSub

3、学生“考试”表代码

双击“工程资源管理器”窗口左边中的“Sheet1(考试)”,在右侧窗口中输入代码。其中两个按钮代码一个是“随机出题”(CommandButton1):callSetapaper;一个是“交卷评分”(CommandButton2):callscore。代码如下:

PrivateSubCommandButton1_Click()

CallPaper

EndSub

PrivateSubCommandButton2_Click()

CallScore

EndSub

PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)

Dimr%,xAsSingle:DimIAsInteger

If(Target.Column<>2)ThenExitSubr=Target.Row

r=Target.Row

If(Selection.Count>1)Then

Range("b"&r).Select:ExitSub

EndIf

Fori=1To5

x=(r-i)/5:If(x=Int(x))ThenExitFor

Nexti

Ifr=x*5+1ThenExitSub

Ifx>0Then

Cells(x*5+1,1)=Left(Target.Value,1)'填写答案

EndIf

四、说明

1、考试前设置好抽题数,再分发给学生

2、答题方法为:单击选项前的字母选择,再次单击该选项取消选择。

3、本设计可以完善,如增加自动计时功能等,时间到自动停止答题。

参考文献

[1]胡维华.计算机基础与应用案例教程[M].北京:科学出版社,2013.2

[2]陈永强,李茜,陈海川.例学VBA——Excel/Access/PowerPoint中的VBA高效应用[m].中国铁道出版社.2010.07.

作者简介:王章生,(1966年4月—)男,汉族,讲师、工程师、职业指导师,浙江东阳人,浙江横店影视职业学院影视制作学院党总支副书记,研究方向为信息技术、思想政治与党的建设。

论文作者:王章生

论文发表刊物:《知识-力量》2018年9月中

论文发表时间:2018/9/27

标签:;  ;  ;  ;  ;  ;  ;  ;  

巧用Excel论文_王章生
下载Doc文档

猜你喜欢