用VBA编排学生座位表

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

用VBA编排学生座位表(2011-09-1023:10:47)转载▼标签:it分类:技术交流在每学年的新生开学前,班主任老师要做大量的准备工作,其中必做的一件事就是收集本班学生的报名信息,编排上课的座位表。以往班主任老师都是通过手工来编排座位表的,消耗的时间和精力相当大,一旦有学生进行了调整又不得不重复之前的劳动。下面我们就来看看如何用VBA轻轻松松实现座位表的编排。通常情况下,编排座位表需要考虑以下三个因素,即学生的视力、身高、性别等,根据学生在报名表中填写的信息,我们采集了相关的数据(如图1)。利用“控件工具箱”中的“命令按钮”控件在工作表中添加一个命令按钮,修改其“Caption”属性为“排座位”,双击该按钮,在其Click事件中编写下面的代码:PrivateSubCommandButton1_Click()OnErrorGoToerrDimfenzuAsIntegerDimirowAsIntegerRange(D2).Select'对信息表进行排序,关键字分别为视力、身高、性别Range(A3:E48).SortKey1:=Range(E3),Order1:=xlAscending,Key2:=Range(_D3),Order2:=xlAscending,Key3:=Range(C3),Order3:=xlAscending'删除原有的座位表ForEachshInWorksheetsIfsh.Name=座位表ThenApplication.DisplayAlerts=FalseSheets(座位表).DeleteEndIfNextsh'添加名为座位表的新工作表Sheets.Addafter:=Sheets(学生信息)ActiveSheet.Name=座位表'获取分组数fenzu=InputBox(你想把学生分成几个小组?,提示,6)'获取学生总人数icount=Worksheets(1).[a65536].End(xlUp).Row-2'获取每组最多学生人数irow=Int(icount/fenzu)+1'按先行后列的顺序提取学生信息表中的学生名单Forn=1ToirowForm=1Tofenzu'生成第N组的文字(前面空2行用于显示标题)Worksheets(2).Cells(3,m)=第&m&组Worksheets(2).Cells(n+3,m)=Worksheets(1).Cells(fenzu*(n-1)+m+2,2)NextmNextnMsgBox座位表编排成功,请根据实际情况手工微调!,vbOKOnly+vbInformation,提示err:ExitSubEndSub代码说明:(1)为了使编排的座位表更加合理,我们把视力低的同学尽量往前排,相同视力的同学按身高的高矮顺序排,如果身高又相同则女生排在前面,男生排在后面。(2)考虑到学生分班后肯定会进行一些调整,所以在生成座位表前首先会检查并删除当前工作簿中原有的“座位表”工作表。关闭代码窗口返回Excel工作表中,单击“排座位”按钮,系统首先会创建一个名为“座位表”的工作表并询问学生的分组数(默认为“6”组),根据需要输入相应的数字,单击“确定”按钮即可看到分组后的学生名单了,然后根据需要进行适当的微调就可以了。“讲台”可通过手工插入自选图形来实现,最终的效果如图2所示。需要说明的是,笔者的座位表是根据自己的编排理念来设计代码的,如果在编排的顺序上要进行调整只需将代码中的三个关键字的字段(视力、身高、性别)顺序以及对应的升序(xlAscending)或降序(xlDescending)关系进行相应的调整就可以了。

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功