高等学校教学单位,在增加新专业或原有教学计划不适
应形势发展需要时,要制订或重新修改教学计划。在此过程
中,基本数据(如某门课的周学时、开课学期等)每做一次
调整,都要重新计算各门课的讲授学时、实验学时和总学时,
同时还要求小计、总计。用 EXCEL辅助处理,可以使我们从
大量繁杂重复的计算、抄写工作中解脱出来,使工作变得轻
松、高效,甚至变成一种享受。
从整体上说,Excel教学计划制订辅助模板是一个 带有
VBA程序 的工作簿。在工作簿中我们建立五个工作表:, 比
例结构,,, 开课学期, 和三个, 计划表, 。
第十一章 教学计划辅助制订模板
第十一章 教学计划辅助制订模板
11.1, 计划表”工作表的设计
11.2, 比例结构”工作表的设计
11.3, 开课学期”工作表的设计
11.1, 计划表”工作表的设计
11.1.1 结构与格式设计
11.1.2 代码设计
11.1.3 应用
11.1.1 结构与格式设计
?,计划表 1”、“计划表 2”、“计划表 3”分别为 公共课、专业课和方向必
修课 的课程设置与教学时间计划表。它们的结构和格式基本相同。以“计划表 1”为例说明制作要点。
? 定义纸型为 B5、纵向,上下左右页边距分别为 1,1,0.9,0.9。
? 设置如图1所示的表格样式。
? 标题为“宋体”,12号字、加粗,其余部分为“宋体” 10号字。单元格
格式设置:数字作为文本处理,水平居中,垂直居中,文本控制设置为 缩小字体填充。
? 列宽度参照图1按实际情况手动调整。注意使 Q,R两列在不同页内。
? 行高度可设置为“最合适的行高”,也可设置为固定行高。根据整个页 面布局而定。
? 打开“控件工具箱”工具栏,在工作表的右侧添加一个命令按钮,命令 按钮的 caption属性设置为“数据统计”。
?,课程类别”列的内容根据实际情况设置,每一类行数可多可少,可任 意增删,但最后一行的“课程编号”应为“小计”。
?,计划表 1”制作完成后,通过复制、修改课程类别和部分文字得到“计
划表 2”和“计划表 3”。其结构与“计划表1”结构基本相同。
图 1
11.1.2 代码设计
?,计划表 1”、“计划表 2”、“计划表 3”工作表都定义了一
个命令按钮,数据统计,。用来根据周学时和授课周数求每
门课的,共计”、“讲授”、“实验” 学时和同一类课的周
学时小计。
? 三个工作表上命令按钮的 Click事件代码都是一样的:
? Private Sub CommandButton1_Click()
? Call calc
? End Sub
? 它调用通用模块(模块 1)中的过程 calc对当前工作表根据
周学时和授课周数求每门课的,共计”、“讲授”、“实验”
学时和同一类课的周学时小计。
通用模块的建立方法是:在当前工程 VBAProject中,选
“插入”菜单的“模块”项,插入一个通用模块,用默认名
“模块 1”。
? calc是在模块 1中定义的过程,其中有具体的代码。
? 在 calc过程中,定义了一个数组 zxs(8),用来存放 每 一类课 1
至 8学期周学时小计。从当前工作表第 7行开始循环直至“课程编
号”为空。
? 如果未遇到“小计”行,则每行 1到 8学期的周学时和对应的授
课周数(在第 6行)相乘得到课程学时,填写到该课程的“共
计”、“讲授”、“实验”单元格,累加到相应的下标变量,同
时累加“共计”、“讲授”、“实验”学时以及“学分”和课程
门数。课程学时分为讲授、实验和总共三列。如果周学时仅为一
个数,则为讲授学时;如果周学时中含有,+”号,则,+”号左边
的数值为讲授学时,右边的数值为实验学时;如果周学时中有括
号,则括号里面的数值不计入课程学时。
? 如果遇到“小计”行,则分别填写各学期的周学时小计,“共
计”、“讲授”、“实验”学时小计,学分小计和课程门数小计,
11.1.3 应用
,计划表 1”,,计划表 2”和, 计划表 3”的
结构和代码设计完成之后,就可以 输入或修
改 各门课的编号、名称、学分、各学期的周
学时以及考试考查所在学期这样一些基本信
息。
图2为公共课计划表输入基本信息后的情形。
图 2
在“计划表 1”中单击“数据统计”命令按钮,得到结果如图3所示。
图 3
“计划表 1”的打
印结果如图 4
所示:
同样,我们在, 计划表 2”中输入专业课的有关基本信息如图5所示。
图 5
在“计划表 2”中单击“数据统计”命令按钮,得到结果如图6所
示。
图 6
在, 计划表 3”中输入方向必修课的基本信息,单击, 数据统计, 按钮得到统计结果,打印出来的表格如下图所示。
11.2,比例结构, 工作表的设

? 11.2.1 结构与格式设计
? 11.2.2 代码设计
11.2.1 结构与格式设计
?, 比例结构,工作表包含各类课程门数、
学时数、学时比例、学分数、学分比例、
各学期课程门数和周学时等信息。工作
表设计成如图9所示的样式。
? 定义纸型为 B5、纵向,上下左右页边距
分别为 2,1,1.4,1.4。
? 标题为“宋体” 14号字、加粗,其余部分为“宋体” 12
号字。学时比例、学分比例列的数值设置为 2位小数。数
值单元格对齐方式为水平靠右、垂直居中。
? 列宽度参照图9按实际情况调整。注意使 H,I两列在不
同页内。
? 在 B10单元格定义公式,=SUM(B4:B9)”,然后用填充柄
向右填充到 G10单元格,并删除 F10单元格的公式。
? 在 F4单元格定义公式,=C4*100/$C$10”,然后用填充柄
向下填充到 F9单元格。
? 在 H4单元格定义公式,=G4*100/$G$10”,然后用填充
柄向下填充到 H9单元格。
? 在 C16单元格定义公式,=D16+E16”,然后用填充柄向
下填充到 C23单元格。
? 在 F16单元格定义公式,=G16+H16”,然后用填充柄向
下填充到 F23单元格。
? 打开“控件工具箱”工具栏,在工作表的右侧添加一个
命令按钮,命令按钮的 caption属性设置为“数据统计”。
11.2.2 代码设计
?,比例结构”工作表定义了一个命令按钮,数
据统计,。用来根据三个“计划表”统计出有
关结果并填入表格。
? 对命令按钮的 Click事件编写代码。
?程序分 两部分,
?第一部分 的功能是在每个计划表中,从第 7行开始
查找“课程编号”中的“小计”。如果是“小计”
行,则提取小计中的“共计”、“讲授”、“实
验”学时、学分和课程门数,填入“比例结构”
工作表特定的单元格。
?第二部分,按学期在每个工作表中累加各学期考
试、考查课程数和周学时,并填入“比例结构”
工作表特定的单元格。
11.3,开课学期”工作表的设计
? 11.3.1 结构与格式设计
? 11.3.2 代码设计
11.3.1 结构与格式设计
?,开课学期, 工作表是将三个计划表的开设
课程按学期 重新排列,同时列出学分、总学
时、讲授学时、实验学时、周学时和考核方
式等信息。
? 工作表的样式如下页图所示。
定义纸型为 B5、纵向,上下左右页边距分别为 1、
1,0.9,0.9。
标题为, 宋体, 11号字、加粗,其余部分为, 宋
体, 9号字。
单元格格式设置:数字作为文本处理,水平居中,
垂直居中,文本控制设置为自动换行。
列宽度参照图10按实际情况调整。注意使 I,J
两列在不同页内。
行高度可设置为, 最合适的行高, 。
设置 A2:I130区域表格线(表格的行数留有充分
余地)。
在工作表的右侧添加一个命令按钮,命令按钮的
caption属性设置为, 刷新数据, 。
11.3.2 代码设计
?, 开课学期”工作表定义的命令按钮“刷新
数据”。用来从三个“计划表”按开课学期
提取课程及其相关信息填入表格。
? 对命令按钮的 Click事件编写代
? 该程序段包括 两部分,
? 第一部分,生成按学期排列的教学计划表。首先
清除 3-100行原有的内容,然后按学期从三个计划
表中提取每门课的课程编号、课程名称、学分、
总学时、讲授学时、实验学时、周学时、考核方
式,通过数组填入当前工作表。每学期最后留出
一“小计”行。
? 第二部分,填写“小计”数据。从当前工作表第
3行开始逐行判断处理,如果不是“小计”行,则
累加“周学时”、“学分”、“共计”、“讲
授”、“实验”小计和课程门数。如果是“小计”
行,则将小计数据填入对应的单元格。