毛战军
(长江大学一年级教学工作部,湖北 荆州434023)
在《高等数学》课程补考和重修考试结束后,都会把参加考试的学生的成绩按每个班级分类制作成纸质成绩单送交班级所属学院教学办存档。一般情况下,在阅卷完毕后,阅卷教师都会根据阅卷结果将学生成绩制作成电子格式的成绩总表(见图1),再按分班成绩单模板的要求,制作统一格式的分班成绩单(见图2)。以2014年9月《高等数学A(下)》(理工类)东校区考区为例,就有6个学院的66个班级,共计422名学生参加补考,在向各学院送交分班成绩单时,就需要制作66个班的分班成绩单。阅卷教师按分班成绩单模板要求填写分班成绩单的工作程序倒是很简单,先根据阅卷结果制作阅卷成绩总表,再将总表中的信息按要求拷贝粘贴到分班成绩单模板相应的栏目中,然后将制作完毕的分班成绩单保存在指定的文件夹中,在审核无误后打印成纸质成绩单。如果只依靠手工操作,则操作动作频繁、工作量大、错误率高、经常需要返工,使得制作分班成绩单成为《高等数学》补考和重修阅卷中的一个虽然简单但非常繁琐的工作。为解决该问题,特使用VBA语言针对分班成绩单的制作需求编写VBA程序,实现了在阅卷成绩总表中自动判断并读取同一班级学生的成绩信息,在分班成绩单模板中自动填写相应栏目,将填写完毕的分班成绩单自动保存在指定的文件夹中,使这一工作能高效、精确地完成。
图1 阅卷成绩总表
图2 分班成绩单模板
制作分班成绩单的主要过程是从已经制作的阅卷成绩总表中读取信息,以班级为单位在分班成绩单模板中填写以下的信息:系部名称、班级名称、阅卷教师名称、参加考试的学生的学号、姓名、补考成绩、备注(缓考、缺考等)。
程序的主要流程如下:①判断并选择同一班级学生;②按分班成绩单模板要求填写相应栏目信息;③按班级保存分班成绩单。
1)前期准备工作 阅卷教师按阅卷结果制作阅卷成绩总表,将阅卷成绩总表中的所有栏目信息填写完整,并将阅卷成绩总表数据按班级名称排序。
2)利用循环语句逐一对信息判断 学生的信息在阅卷成绩总表的第3行到第424行。
3)判断是否是同一班级学生 设定某班级学生人数m=1,然后比较阅卷成绩总表中b列“班级名称”第n行数据是否与b列第n+1行数据相同。若相同,即为同一班级学生,该班级学生人数m+1;若不相同,则该班人数m不变,记录同一班级学生信息在阅卷成绩总表中所在行的情况。通过读取阅卷成绩总表中的信息,就可以在分班成绩单模板中按要求填写各栏目信息。
4)填写信息 在阅卷成绩总表中逐一读取已判断为同一班级学生的成绩信息并写入在分班成绩单模板相应的栏目中:
Sheets(3).Range(“a”&3).Value=Sheets(2).Range(“l”&n).Value & “(系、部)”&Sheets(2).Range(“b”&n).Value & “班 课程高等数学A(下)学分6”
’将阅卷成绩总表中的l列“学生院系”名称、b列“班级名称”按要求组成一个字符串填入分班成绩单模板的“a3”单元格中。
’根据记录的该班学生信息在阅卷成绩总表所处行的情况,在分班成绩单模板的第6行到第23行的a、b、c、d、e、f、g、h列中按要求填写该班学生的成绩信息
5)保存分班成绩单 在分班成绩单模板中将同一个班级学生的成绩信息填写完毕之后。为了便于审核和修改,将分班成绩单模板按班级取名并保存在 “D:\11\”文件夹中:
6)将分班成绩单模板复原 将分班成绩单模板保存为班级成绩单后,需要将已经填写的信息删除,便于再填入下一个班级的成绩:
’将分班成绩单模板的第6行到第23行的a、b、c、d、e、f、g、h列信息清除。
该程序在winxp+office2003的工作环境下通过,实现了2014年9月的这次高等数学A(下)(理工类)补考东校区考区学生成绩从阅卷成绩总表到各班分班成绩单的自动生成(见图3)。经过审核无误后,进入到打印审批过程,较好地解决了这一问题。该方法可以移植到与高等数学A(下)(理工类)相类似课程成绩处理的同一环节中,可以根据具体要求,对程序的人机对话界面进行优化,增加一些自动判断过程,就可更好地完成工作。
图3 分班成绩单
[1]Wal kenbach J.中文版Excel 2007高级vba编程宝典 [M].冯飞,焦瑜净 译.北京:清华大学出版社,2009:146-157.
[2]Wal kenbach J.中文版excel 2003宝典 [M].陈缅,裕鹏等 译.北京:电子工业出版社,2004:439.