第十章 教学工作量统计模板
? 10.1 设计目标
? 10.2,总表”工作表
结构设计
? 10.3 工作簿代码设计
? 10.4“总表”工作表代

? 10.5,院课”工作表设

? 10.6,系课”工作表设

? 10.7,实验课”工作表
设计
? 10.8 使用说明
10.1 设计目标
? 本章介绍一个针对于高等学校的教学工作量统计模板,它
用来统计教师各教学环节的课时数和课时费等。其设计目
标为:
? 1.以系为单位,按学期或学年,输入或修改每位教师各门
课各教学环节的教学工作量基本数据。
? 2.对各教学环节按一定算法写出计算公式并计算出结果。
? 3.求出每位教师的教学工作量总学时,并根据不同职称的
课时费标准计算出课时费。
? 4.求出整个单位的工作量合计、课时费合计等数据。
? 5.在“总表”基础上,产生出“系内课”、“学院课”和
“实验课”教学工作量分表。
? 6.工作量算法在线提示。
? 7.打印输出。
? 只需在“总表”中输入基本数据,公式自动填入,计算自
动完成,分表自动产生。
10.2,总表”工作表结构设计
? 整个教学工作量统计模板是一个工作簿,包含
“信息”、“总表”、“院课”、“系课”和
“实验课”五个工作表。“信息”工作表内容比
较简单,只有各级职称课时费标准和使用说明。
“总表”是核心,是信息的基础。“院课”、
“系课”和“实验课”在总表的基础上由系统生

“总表”的格式如图 10.1所示
? 页面设置:定义纸张大小为 A4,横向。上下左右页边距分别为 1,1、
0.9,0.9。
? 单元格格式设置:学时、课时费的数值为 1位小数,其余列数字作为
文字处理。学时、课时费水平靠右,其余居中。垂直居中。标题为
“宋体” 16号字,其余为“宋体” 9号字。字体控制设置为缩小字体
充。
? 行高度设置,5-200行,用“格式 |行 |行高”菜单,设置行高为 12,
其余行按实际情况手动调整。列宽度参照图 10.1手动调整。宽度的
调整要保证 AB列在页边距之内,而 AC列在页边距之外(以使打印时
将其排除在页外)。
? 表格项目的填写说明和工作量算法说明等信息以批注的形式给出,
查阅方便,形式直观。图 10.2、图 10.3是关于理论课总学时和实验课
总学时的批注。表头右上角中带三角标记的均有批注信息。
? 打开“控件工具箱”工具栏,在工作表的右侧添
加两个命令按钮,命令按钮的 caption属性分别设
置为“排序求和”和“清除汇总”。
图 10.2图
返回
10.3 工作簿代码设计
? 工作簿中, 总表, 以及其它各工作表单元格内容发生变化
时,系统应自动填写或计算相应值。为此,我们应对当前
工作簿 Workbook的 SheetChange事件编写代码:
? 编写代码首先求出当前表名、当前单元格地址,并从当前
单元格地址中分解出列名和行号。
?, 总表, 中输入基本信息和系统自动填入的结果如图 10.4
所示。
各级职称的课时费
标准在“信息”工

表中设置情况如图
10.5所示。
返回
10.4“总表”工作表代码
? 前面提到,“总表”工作表上定义了两个命令按钮:“排序求和”和“清
除汇总,
“排序求和”命令按钮的 Click事件代码如下:
? Private Sub CommandButton1_Click()
Call sort_sum
End Sub
? 它调用通用模块(模块 1)中的过程 sort_sum对当前工作表按“教师”排序、
求各教师工作量小计和总计信息。
? 通用模块的建立方法是:在当前工程 VBAProject中,选择“插入”菜单的

模块”项,插入一个通用模块,用默认名“模块 1”。
? sort_sum是在模块 1中定义的过程之一,编写代码在这个过程中。
? 首先判断,A5”单元格是否有值,若无值则提示“无数据”并
退出。再查找 A列中是否有“总工作量”字样,若有,说明该表已经进行

“排序求和”,也退出。
? 其次,按教师姓名排序,设置教师总学时边框横线(因为有的可能被删除
过)。求各位教师工作量小计和课时费。方法是从 5行到“教师名为空”循
环,若教师未改变,则教师学时累加,否则,累加教师人数、填写教师
总学时、总课时费、删除教师总学时和教师总课时费边框中间横线。
? 最后,插入一个汇总行,填入总工作量、教授工作量、副教授工作量、
讲师工作量、助教工作量、总课时费、教师人数等汇总信息,并插入符。
? 总表中“清除汇总”命令按钮的 Click事件代码如下:
? Private Sub CommandButton2_Click()
Call dele_r
End Sub
? 它调用通用模块(模块 1)中的过程 dele_r清除当前工作表中汇总行和分
页符。以便增删教师教学工作量信息。
? 对过程 dele_r编写代码。
? 过程 dele_r从当前工作表第 5行开始搜索“总工作量”所在行,如果找到,
则删除该行,并删除其后的分页符。
? 单击“总表”工作表的“清除汇总”按钮,执行 dele_r过程后,“总表”
恢复到图 10.4的情形。
返回
10.5,院课”工作表设计
?,院课”工作表,用来填写和统计课程类别为“院”(即学院计划内)
教学任务的工作量。该工作表的结构和格式除了增加一个“刷新数据”
命令按钮外,与“总表”工作表相同,可由“总表”复制产生。
?,院课”工作表的“排序求和”和“清除汇总”两个命令按钮的代
码与“总表”中同名的两个命令按钮代码相同,即分别调用“模块 1”
的 sort_sum和 dele_r过程。
?,刷新数据”命令按钮的 Click事件代码为:
Private Sub CommandButton3_Click()
Call dele_r
Call copy_y
End Sub
? 它首先调用模块 1中的过程 dele_r删除当前工作表中汇总行和分页符,
然后再调用模块 1中的过程 copy_y将“总表”中“课程类别”为“院”
的数据复制到“院课”工作表。
? 注意:“刷新数据”必须通过调用公用模块的过程实现在不同工作表间数据的复制和粘贴,否则复制合粘贴无效。
? 对模块 1中的过程 copy_y编写编码。
? 程序段先清除当前工作表(即“院课”工作表) 5-200行的内容,然
后从“总表”工作表第 5行到教师姓名不为空循环,如果课程类别为
“院”,则将该行复制到当前工作表。
程序执行后得到如图 10.7所示的结果:
返回
10.6,系课”工作表设计
?,系课”工作表,用来填写和统计课程类别为“系”(即系内)教学任
务的工作量。,系课”工作表的“排序求和”和“清除汇总”两个命
令按钮的代码与“总表”中同名的两个命令按钮代码相同,即分别调用
“模块 1”的 sort_sum和 dele_r过程。
?,刷新数据”命令按钮的 Click事件代码为:
Private Sub CommandButton3_Click()
Call dele_r
Call copy_x
End Sub
? 它首先调用模块 1中的过程 dele_r删除当前工作表中汇总行和分页符,
然后再调用模块 1中的过程 copy_x将“总表”中“课程类别”为“系”
的数据复制到“系课”工作表。
? 将过程 copy_y放在公用模块,是为了实现在不同工作表间数据的复制和
粘贴。
? 对模块 1中的过程 copy_x编写编码
? 这个程序段先清除当前工作表(即“系课”工作表) 5-200行的内容,
然后从“总表”工作表第 5行到教师姓名不为空循环,如果课程类别为
“系”,则将该行复制到当前工作表。
程序执行后得到如图 10.8所示的结果 。
继续 返回
10.7,实验课”工作表设计
?,实验课”工作表,用来填写和统计实验课教
学工作量。该工作表的结构和格式如图 10.9
所示。它与“院课”工作表相似,先由“院
课”复制产生,再做部分修改。
? 修改方法:将 B,G,H,I,J,P,Q,R,S,T,U,V,W,X,AA列隐藏(列宽度设
置为 0),将表头中“姓名”改为“任课教师”、“课程总学时”改为“人机时”、“教
师总学时”改
? 为“实验室总人机时”,宽度的调整使 AD列在页边距之内,AE列在页边距之外(以使打
印时将其排除在页外),设置 A到 AD列的边框。
?,实验课”工作表的“清除汇总”命令按钮的代码与“总表”中同名命令按钮代码相同,
即调用“模块 1”的 dele_r过程。
?,刷新数据”命令按钮的 Click事件代码为:
? Private Sub CommandButton3_Click()
? Call dele_r
? Call copy_s
? End Sub
? 它首先调用模块 1中的过程 dele_r删除当前工作表中汇总行和分页符,然后再调用模块 1中
的过程 copy_s将“总表”中“实验课总学时”大于零的数据复制到“实验课”工作表。
? 将过程 copy_S放在公用模块,也是为了实现在不同工作表间数据的复制和粘贴。
? 对模块 1中的过程 copy_s编写编码。
? 过程 copy_s首先清除当前工作表(即“实验课”工作表) 5-200行的内容,然后从“总表”
工作表第 5行到教师姓名不为空循环,如果实验课总学时大于零,则将该行复制到当前工
作表。最后填充 Y列计算人机时的公式。
程序执行后得到如图 10.10所示的结果,
?,排序求和”命令按钮的作用是对当前工作表按“实验室”排序、求各实
验室人机时小计和总计信息。对 Click事件编写代码。
? 过程中,首先判断,A5”单元格是否有值,若无值则提示“无数据”并
退出。再查找 A列中是否有“总工作量”字样,若有,说明该表已经进
行了“排序求和”,也退出。
? 接下来,按实验室排序,重新设置,Y5”到,AD200”边框(因为有的可
能被删除过),求各实验室人机时小计和总计。
? 求各实验室人机时小计和总计的方法是从 5行到“实验室名为空”循环,
若实验室未改变,则实验室人机时累加,否则,填入“实验室总人机
时”,删除实验室总人机时边框中间横线。
? 最后,插入一个汇总行,填入总人机时,并插入分页符。
“实验课”工作表中“排序求和”代码执
行后,可打印出如图 10.11所示的结果 。
返回
10.8 使用说明
? 本教学工作量统计模板以系为单位,按学年、学期或阶段,对每位教师各
门课的教学工作量进行统计。使用时,首先打开本模板,随即另存为一个 Excel工作簿,文件可以按学年、学期或其它方式命名,如:“工作量 99”、
“工作量 00秋”、“工作量 00春”,等等。
? 然后,选择“信息”工作表,检查或修改课时费标准,可随时到“信息” 工作表查阅使用说明。
? 在“总表”工作表中输入或修改每位教师各门课各教学环节的教学工作量
基本数据,系统自动对各教学环节按规定的算法写出计算公式并计算出结 果填入相应单元格。
? 单击“排序求和”命令按钮,系统求出每位教师的教学工作量总学时,根
据职称的课时费标准计算出课时费,求出整个单位的工作量合计、课时费
合计等数据。此时,可预览结果或打印输出。
? 单击“清除汇总”命令按钮,删除当前工作表中汇总行和分页符后,可继 续增删课程和教师工作量信息。
? 如果想要从“总表”中提取“系内课”、“学院课”和“实验课”信息,
形成教学工作量分表,可选择相应的工作表,单击“刷新数据”产生新表。 单击“排序求和”或“清除汇总”完成如上所述的功能。
? 若想查看工作量有关项目的计算办法,将鼠标移动到表头中右上角带有三 角标记单元格内,即可显示出批注信息。
? 注意:打印要指定页号,不要全部打印。 返回