用VBA编排学生座位表
用Excel VBA轻松实现座位表的编排
单击 V A代码编辑窗口中的际 准】 B 工具栏中的[ i 主
行子过程, 用户窗 口1 或按 F 5键 , 在座位 表 中弹 出一 则 个 如图 1 所示 的对话框 。 () 3 建立新 的函数 Z oi ) 来 排位 , 击【 uc(用 单 插入 】 /
【 模块】在代码窗 口中输入如下 代码 : ,
Itg r ne e
“ 视力表 ” 输入学 号 、 姓名 和视力 等有关 数据 并将其按
“ 视力 ” 排序 。
收稿 日期 :0 - 0 1 21 1- 9 0 作 者 简介 : 瑞梅 (98 )女 , 师, 连 16一 , 讲 学士 , 究方 向: 研 计算 机应 用 , 计算机 研 究与教 学 。
Wa l函数将字符转换 为数字 将输入 的数字赋给变量 G op r u G op=V lIp to(本班学生分为几组 ) r u a( uB x ” n )
En u dSb
作表格。 种做法是 很麻烦 的 , 这 因为每编 制一次都需要
重 复同样 的工作 。因此 , 研究一种 简单有效 的方法来编
Is= i+ 2 x
Frj= 3 T rw o o I s+ 3 o
给座位表赋值
S et ” he ( 座位 表 ”.e sji= S et ” s ) l (, Cl ) he ( 视力 s 表” .e sI ,) ) l (x 2 Cl s
再在 Z o i) uc( 函数的倒数第二行加人如下代码 : Z oi ru )调用 Z oi uc( o p g u c 函数对学生进行排座 按 F 健 弹出如 图 2 5 所示 的宏对话 框。单击【 】 运行 命令 按钮 , 在弹 出的对话 框 中输 人 “0 , 击 “ l” 单 确定 ” ,
VBA在Excel中实现表格排序的方法总结
VBA在Excel中实现表格排序的方法总结Excel是一款功能强大的数据处理工具,而VBA(Visual Basic for Applications)是其自带的编程语言,提供了许多功能强大的数据处理和自动化操作的方法。
其中之一就是通过VBA在Excel中实现表格排序。
本文将总结VBA中几种常用的表格排序方法,供读者参考和学习。
一、VBA中的Range对象在VBA中,Range对象用于表示Excel中的单元格或一系列单元格。
通过指定Range对象的属性和方法,我们可以在VBA中对表格进行排序。
下面是一个实例,展示如何使用Range对象进行排序:```Sub SortRange()Dim ws As WorksheetDim rng As Range' 指定要排序的工作表和范围Set ws = ThisWorkbook.Worksheets("Sheet1")Set rng = ws.Range("A1:C10")' 对范围内的数据进行排序rng.Sort Key1:=rng.Columns(1), Order1:=xlAscending,Header:=xlYesEnd Sub```上述代码首先使用`Set`语句指定了要排序的工作表和范围。
接着,通过调用`Sort`方法对范围内的数据进行排序。
在这个例子中,我们通过`Key1`参数指定了基于第一列进行排序,`Order1`参数指定了升序排序,`Header`参数指定了有表头。
根据需求,可以根据实际情况进行调整。
二、VBA中的ListObject对象除了使用Range对象,我们还可以使用ListObject对象来实现表格排序。
ListObject对象是Excel中用于处理数据表的对象,它提供了更多的排序选项和灵活性。
下面是一个使用ListObject对象进行排序的示例:```Sub SortListObject()Dim ws As WorksheetDim tbl As ListObject' 指定要排序的工作表和表格Set ws = ThisWorkbook.Worksheets("Sheet1")Set tbl = ws.ListObjects("Table1")' 对表格进行排序tbl.Sort.SortFields.Cleartbl.Sort.SortFields.Add Key:=tbl.Range.Columns(1), _SortOn:=xlSortOnValues, _Order:=xlAscending, _DataOption:=xlSortNormalWith tbl.Sort.SetRange tbl.Range.Header = xlYes.MatchCase = False.ApplyEnd WithEnd Sub```上述代码首先使用`Set`语句指定要排序的工作表和表格。
ExcelVBA(15)–用VBA给表格排序
ExcelVBA(15)–⽤VBA给表格排序本⽂转载⾃公众号:Excel学习世界,作者:我是⼩花椒。
如有侵权,请联系我删除。
今天讲解如何⽤ VBA 给表格排序。
案例:对下表排序,排序优先顺序依次为“实际奖⾦”和“奖⾦基数”,从⼤到⼩排。
⽅法:1. 按 Alt F11 打开 VBE,输⼊以下代码:Sub st()Range('A1:E9').CurrentRegion.Sort KEY1:=Range('E1'), ORDER1:=xlDescending, _KEY2:=Range('C1'), ORDER2:=xlDescending, _Header:=xlYes'设置需要排序的区域范围'A1:E9',第⼀、第⼆排序字段依次为'E1'和'C1',顺序都为倒序,第⼀⾏需要包含标题End Sub部分代码释义:Range('A1:E9').CurrentRegion.Sort:对括号中的区域排序KEY1:=Range('E1'), :第⼀个排序字段为 E1,即“实际奖⾦”ORDER1:=xlDescending:第⼀个排序顺序是降序排列。
如果需要升序,= 后⾯就写 xlAscending_:空格下划线是 vba 代码换⾏符,代码过长的情况下,换⾏会增加可读性。
代码虽然换⾏,但还是⼀整句,所以在这后⾯⽆法添加注释Header:=xlYes:需要包含标题,如果不需要,就写 xlNo2. 制作按钮:1) 在表格界⾯点击“开发⼯具”-->“插⼊”-->“按钮”2) 将按钮名称改为“排序”3) 将按钮的宏指定为上述“st”3. 现在点击按钮运⾏代码,就已经按照我们要求排序了。
用Excel VBA轻松实现座位表的编排
用Excel VBA轻松实现座位表的编排
连瑞梅
【期刊名称】《农业网络信息》
【年(卷),期】2007(000)002
【摘要】使用Excel绑定的VBA编辑器,能够减轻操作者的工作负担,使Excel的大量重复性操作变得简单而快捷.本文主要介绍如何用Excel VBA来轻松实现学生座位表的编排.
【总页数】2页(P119-120)
【作者】连瑞梅
【作者单位】潍坊学院,山东,潍坊,261061
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于EXCEL+VBA的电大考务编排辅助系统设计与实现 [J], 赵斌
2.利用EXCEL实现大型会议座位表的自动编排 [J], 郑树旭
3.基于Excel VBA实现考试自动编排 [J], 周志军;张帆;窦志强
4.巧用Excel与VBA实现座位表的自动生成 [J], 王月兰
5.利用Excel和VBA轻松实现批量抽签 [J], 但山秀
因版权原因,仅展示原文概要,查看原文内容请购买。
巧用Excel VBA 快速编排考场
巧用Excel VBA 快速编排考场座位【摘要】科学的考场座位编排方法可以从根本上杜绝学生考试时的串通舞弊现象,保证考试的公平、公正及其严肃性。
本文结合自己的工作经验,利用Excel VBA编程方法轻松实现了同级各班考生随机排座、且前后左右座位不是同班同学,打印考场座位表、桌贴等功能。
经实际应用,操作简单,方便实用。
【关键词】随机排座;考场编排;座位表;桌贴;VBA数组在编排考场时,既要基于学校实际,如需考虑各考场人数、组数、每组人数等出现差异,充好利用好每一个考场;还要让同级各班考生被重新随机排序后基本均匀地散布到各个考场,基本做到同一考场内同一班的考生前后左右均不相邻,从根本上杜绝学生考试时的串通舞弊现象,保证考试的公平、公正及其严肃性。
随着学校办学规模逐渐扩大和学生人数的增加,考场编排的工作量不断加大。
面对Excel工作表内动辄上千的数据行,通过手工多次排序和复制粘贴数据完成考场编排工作显然太麻烦了。
那么,能不能用相对比较简单的办法来解决问题呢?答案显然是肯定的。
Excel是微软公司的Microsoft office的组件之一,它可以进行各种数据的处理、统计分析,在学校工作中有着广泛的应用。
例如花名册、座位表、登分表等的电子文档都是使用它来创建的。
Excel不仅具有强大的制表功能,同时还内置了系统开发工具VBA。
VBA是指Visual Basic for Application,它是在Office中广泛应用的宏语言,可以直接对Excel对象进行编程,从而提高Excel的利用效率。
使用它可以增强Excel的自动化能力,使用户更高效地完成特定任务。
因此,笔者空闲时用VBA编了个程序,轻松快速地编排考场,生成考场座位表、桌贴等,经实际应用,操作简单,方便实用。
一、考场编排在中高考中各考场人数一般是30人,但基于笔者学校的实际,会出现各考场人数各异、组数各异及每组人数各异的情况。
因此,编排考场前,工作人员必须将考生花名册(必须含班级)录入花名册工作表,考场基本信息(必须含考场号、各组人数等)录入考场设置工作表中,如下图所示。
利用VBA在Excel中开发普通高中考试排座系统
利用VBA在Excel中开发普通高中考试排座系统作者:娄青来源:《中国教育信息化·基础教育》2012年第07期摘要:文章介绍利用VBA在Excel中如何开发普通高中考试排座系统,并给出了详细代码。
关键词:Excel;VBA;考试排座系统中图分类号:TP391 文献标识码:B 文章编号:1673-8454(2012)14-0088-05考试在普通高中学校教学过程中有着极其重要的地位,它能检测学生知识掌握程度,能检查教师教学情况,能衡量一所学校办学质量,因此学校常常举行各种月考和联考。
在一所普通高中学校里,往往有三个年级和文理分科情况,一次考试过程中学生考场和座位的安排就是一项任务繁重的工作,一般的考试分析系统没有考生座位安排模块,主管考试工作的教师就经常进行学生试场手工安排的重复性工作。
微软的Excel软件为大家所熟悉和掌握,教师都非常喜欢用它来处理各种教学事务,经过笔者研究,发现Excel软件工作表的单元格排列方式跟考场座位安排有相似之处,都比较工整有序有规律,为此有了利用Excel软件和VBA技术开发普通高中考试排座系统的想法,并进行尝试和实现。
由于高中存在三个年级和文理分科的情况,考试排座就显得非常复杂,我们以高三理科排座为例讲述普通高中考试排座系统,其余排座方法与此差不多,不再重复。
该系统由四个程序模块和五个Excel工作表组成,“高三理科”工作表存放高三理科学生名单,“高三座位”工作表存放各试场座位情况,“试场安排”工作表存放试场人数与各排人数,“班级情况”工作表存放班级数和各班学生人数,“试场分布”工作表存放试场号与试场位置。
下面就四个程序模块代码加以详细说明。
一、系统初始化模块在该模块代码中,程序取得“班级情况”工作表上的数据,如图1所示,赋予并初始化各系统参数,为接下来的排座做好准备,其程序代码如下(附有程序注解):Option ExplicitPublic Gao3LiBanShu As Integer '高三理科班级数Public Gao3Li(20) As Integer '高三理科各班人数Public Gao3Row As Integer '工作表有效行数Public ShiChangHao As Integer '试场号Public ZongShiChang As Integer '总试场数Public ShiChangShu As Integer '试场满员的试场数Public YuShu As Integer '余数(未满员试场的学生人数)Sub Init()Dim i As IntegerGao3LiBanShu = Worksheets("班级情况").Cells(1, 4).Value '取得高三理科班级数For i = 1 To Gao3LiBanShuGao3Li(i) = Worksheets("班级情况").Cells(2 + i, 4).Value '取得高三理科各班人数Next iEnd Sub二、随机排试场模块该模块进行随机方式的试场安排,在程序代码中,根据前面获得的初始化参数计算高三理科学生(如图2“高三理科”工作表所示)人数,并取得“试场安排”工作表的试场人数,如图3所示,由高三理科人数与试场人数计算得出满员试场数和未满员试场人数,对“高三理科”工作表选择的试场列区块产生随机数,同时对随机数进行排序,利用循环语句对满员的试场进行排座,最后对未满员的试场进行排座,如图4试场列所示,其程序代码如下:Sub PaiShiChang() '进行随机方式排试场Dim i As IntegerDim j As IntegerShiChangHao = 0 '初始化试场号,若前面有排过别的试场,ShiChangHao = ShiChangHaoWorksheets("高三理科").Activate '激活高三理科工作表Gao3Row = 1For i = 1 To Gao3LiBanShuGao3Row = Gao3Row + Gao3Li(i) '高三理科表最大有效行数Next iShiChangShu = (Gao3Row - 1) \ Worksheets("试场安排").Cells(4, 2).Value '整除取得试场数YuShu = (Gao3Row - 1) Mod Worksheets("试场安排").Cells(4, 2).Value '整除余数为多少人Cells(1, 3).Value = "试场"Cells(Gao3Row, 3).SelectRange(Selection, "c2").Select '选择试场列区块Selection.Value = "=rand()" '产生随机数Cells(Gao3Row, 3).SelectRange(Selection, "a2").Select'排序,第一关键字:随机数,第二关键字:学号Selection.Sort key1:=Columns(3), order1:=xlAs cending, key2:=Columns(1),order2:=xlAscendingFor i = 1 To ShiChangShu '进行满员的试场排座位For j = 1 To Worksheets("试场安排").Cells(4, 2). Value '进行一个试场的排座位Cells(Worksheets("试场安排").Cells(4, 2).Value * (i - 1) + 1 + j, 3).Value = i + ShiChangHao '赋予试场号Next jNext iZongShiChang = ShiChangShuIf YuShu 0 Then '排最后一个试场For j = 1 To YuShuCells(ShiChangShu * Worksheets("试场安排").Cells(4, 2).Value + 1 + j, 3).Value = ShiChangShu + 1 + ShiChangHaoNext jZongShiChang = ZongShiChang + 1 '高三理科总试场数End IfEnd Sub三、考场座位安排模块该模块进行各试场座位安排,在程序代码中,取得“试场安排”工作表的各排人数,即为各试场排座的各排人数,如图3所示。
EXCEL VBA在考场编排中的设计与实现
力. 使用户更高效地完成特定任务 。
软件 分为试 场编 排 、 座位 表生成 、 桌 贴 的人员将 基本数 据 , 如 考 生 名 册 ( 含 班级 ) 、 考场基 本信 息 ( 考 场名称 、 每考 场人数 等 ) 录
《 中国教 育信息化 编辑部 : m i s @m o e . e d u . c n
E XC E L V B A在考场编排中的设计与实现
钱建明
( 杭 州市萧 山区新街镇初级 中学, 浙江 杭 州 3 1 1 2 1 7 )
摘 要: 为保 证 考试 的 公 平 、 公正及其严肃性 , 科 学 的考 场座 位 编 排 是 一 个重 要 手 段 。 文章 介 绍 的 是 利 用E XC E L V B A编写考场编排软 件的设计和 实现 , 利用此软件 , 可 轻 松 实 现 学校 考 试 中繁 琐 的 考 场 编 排 、 座位表 、 桌贴 、 班 级 考 生 分 布 等 的 一 次 性 生 成 及 打 印 。经 实 际 应 用 , 操 作 简单 , 方 便 实用 。
在编排试场 时 , 要 尽 量 保 证 学 生 座 位 的 随 机 性 。对
大的 比重 , 而考场 座位编排是考 务信息化管理 中一项十
分 重要的工作 。 考 务 工 作 主 要 分 为 考 前 的 考 场 编 排 和 考 后 的成绩统计 与分析 , 这 里 专 门 就 考 前 的考 场 编 排 展 开 分析和讨论 。 随着 学 校 办 学 规模 逐 渐 扩 大 和 学 生 人 数 的 增加, 考 场 安 排 的工 作 量 不 断加 大 。 因此 , 笔 者 决 定 编 写
关键词 : 随机 ; 试场编排 ; 座位表 ; 桌贴
中图 分 类 号 : T P 3 9 3 文献标志码 : B 文章编号 : 1 6 7 3 — 8 4 5 4 ( 2 0 1 4 ) 1 4 — 0 0 6 5 —0 5
Excel VBA编程 典型实例——使用VBA进行排序
Excel VBA编程典型实例——使用VBA进行排序使用Excel 2007提供的排序按钮进行排序时,会将班级或学生的姓名也一起按升序或降序的方式进行排序,从而打乱了数据原有的顺序。
使用VBA代码对工作表进行排序时,只会在每个数据的后面标注出该数据处于的名次,而不会打乱数据原有的顺序。
1.练习要点● 冒泡算法的应用● 循环语句2.操作步骤:(1)新建一个空白工作表,创建如图7-12所示的表格。
图7-12 创建成绩表(2)单击【控件】组中的【插入】下拉按钮,在【ActiveX 控件】组中,选择【命令按钮(ActiveX 控件)】按钮。
然后,在工作表中绘制该按钮,如图7-13所示。
图7-13 绘制控件按钮(3)选择所绘制的“命令控件”按钮,并在【属性】对话框中,设置Caption 为“成绩排序”文字,如图7-14所示。
图7-14 设置按钮属性提 示单击【控件】组中的【控件属性】按钮,即可打开【属性】对话框。
、(4)选择“成绩排序”命令按钮,在【属性】对话框中,单击Font 右侧的【浏览】按钮,如图7-15所示。
创建选择绘制效果图7-15 单击【浏览】按钮(5)在弹出的【字体】对话框中,设置【字体】为“隶书”;【大小】为“三号”,如图7-16所示。
图7-16 设置字体格式技 巧选择“命令控件”按钮中的文字,在【字体】选项卡中,也可以设置控件的字体格式。
(6)在弹出的代码编辑器窗口中,输入如图7-17所示的代码。
图7-17 输入代码其中,在代码编辑窗口中输入的代码如下:Private Sub CommandButton1_Click()Dim myarray()Dim m, n, i, j As Integern = Application.WorksheetFunction.CountA(Columns(1))'从第二列到第八列一共循环七次For m = 2 To 8'给数组赋值ReDim myarray(n)For i = 3 To nmyarray(i) = Cells(i, m).ValueNext i选择单击设置 效果输入'用冒泡排序法对数组中的元素进行排序操作For j = 0 To n - 2For i = n To j + 2 Step -1If myarray(i) > myarray(i - 1) Thentemp = myarray(i)myarray(i) = myarray(i - 1)myarray(i - 1) = tempEnd IfNextNextFor i = 1 To nDebug.Print myarray(i)Next i'将各数值在列中的排名加括号后添加到原单元格的数值后面,中间空一个空格For i = 3 To ns = Application.WorksheetFunction.Match(Cells(i, m), myarray, -1) - 1Cells(i, m).Value = Cells(i, m).Value & Space(1) & "(" & s & ")"Next iNext m'主体程序执行完毕使各列的宽度与单元格的大小相适应Cells.SelectSelection.Columns.AutoFitCommandButton1.Enabled = TrueMsgBox "排序完成!", vbOKOnly, "提示框"End Sub(7)单击【控件】组中的【设计模式】按钮,即可取消该模式。
vba 学生成绩年级班级排名表
VBA学生成绩年级班级排名表一、背景介绍在学校教学管理中,学生成绩的排名表是非常重要的一项工作。
通过排名表,老师可以清楚地了解每个学生的学习情况,及时发现学习中存在的问题,并针对性地进行个别辅导。
而在大班级的情况下,手工制作排名表往往效率低下,容易出错。
利用VBA技术编写学生成绩年级班级排名表,可以提高工作效率,减少出错率,方便教师管理学生成绩。
二、VBA编写学生成绩排名表的思路1. 获取学生成绩数据需要从教务系统或Excel表格中获取学生成绩数据,包括学生尊称、考试成绩等信息。
在获取数据时,要确保数据的准确性和完整性。
2. 计算学生成绩排名利用VBA编写程序,对学生成绩进行排名计算。
通常情况下,学生成绩排名是按照总分从高到低进行排名。
在编写程序时,需要考虑同分的情况,并做出合理的排名规则。
3. 生成排名表根据计算出的学生成绩排名,利用VBA生成相应的排名表。
排名表通常包括学生尊称、班级、年级、总分和排名等信息。
排名表的格式可以根据实际需求进行设计,以便老师查阅和使用。
4. 自动化更新排名表考虑到学生成绩会不断更新,因此需要编写VBA程序实现排名表的自动更新功能。
当有新的成绩数据输入时,排名表能够自动进行更新,确保教师获取到的排名表是最新的数据。
三、VBA编写学生成绩排名表的实现步骤1. 数据准备需要准备学生成绩的数据,可以是从教务系统导出的Excel表格,也可以是手动录入的数据。
确保数据的准确性和完整性,以便后续的编写程序。
2. 编写排名计算程序利用VBA编写排名计算程序,包括对学生成绩进行排序和排名的功能。
在编写程序时,要考虑到同分的情况,确保排名的准确性。
3. 设计排名表格式根据实际需求,设计排名表的格式。
包括表头、学生尊称、班级、年级、总分、排名等信息。
排名表的格式应简洁明了,方便老师查阅和使用。
4. 编写自动更新程序编写VBA程序,实现排名表的自动更新功能。
当有新的成绩数据输入时,排名表能够自动更新,确保教师获取到的排名表是最新的数据。
安排学生考试座位
安排学生考试座位在excel中有57个学生,按学号排序,如何实现给他们随机安排考试座位号方法1假如A列是学号1,2,3,……,57。
B列是姓名,在C1中输入=rand(),向下拖拽填充柄至57,在C列产生随机数0.5640531560.2264650420.0741012380.792663650.049040850.268217066再按C列排序,A列就是你要的随机安排考试座位号了。
方法21/在学号前插入两列,A列标题考证号,B列标题随机号,2/在B2中输入公式=int(rand()*57),然后向下拉到第58行.3/对B列进行排序4/然后在A1输入1,按住ctrl向下拉到57,即可得到对应学员的考试号.方法3在工作表中按Alt+F11,打开VBA编程界面,在工具栏第二个图标拉下来,选模块在左边栏双击“模块1”并在右边打开的程序书写区粘贴如下代码Sub GetRnd()Dim rn As RangeDim rnn As IntegerDim cRn As RangeSet rn = Selectionrn.ClearContentsrnn = rn.Cells.CountFor Each cRn In rnDocRn = 1+Int(rnd() * rnn)Loop Until Application.WorksheetFunction.CountIf(rn, cRn) = 1NextEnd Sub现在回到工作表,假如你的学号在A1:A57,那么你就选中B1:B57或C1:C57(或D1:D57),反正只要是空的就行,然后按Alt+F8,在打开的对话窗口中选GetRnd并单击“执行”按钮,你就会在你选中的区域内看到一个随机的数序列。
这就是学生的座位号。
这个程序有一点是比较通用的,不一定要拿来排座位,你如果选中12个单元格(无论是一列还是多列,也无论是一行还是多行),用Alt+F8运行它,它就自动会在这些格内产生1-12的不重复的随机数。
VBA中的排序与筛选方法与实例讲解
VBA中的排序与筛选方法与实例讲解排序与筛选是VBA编程中广泛使用的功能之一。
通过排序和筛选,我们可以对数据进行重排和筛选,以便更好地管理和分析数据。
本文将详细介绍VBA中的排序和筛选方法,并提供一些实例来帮助读者更好地理解和应用这些方法。
首先,我们将介绍一些常用的排序方法。
VBA提供了多种排序方法,可以根据需求选择合适的方法。
常见的排序方法包括按升序排序(Ascending)、按降序排序(Descending)、按字母顺序排序(Alphanumeric)等。
下面,我们通过一个实例来演示VBA中的排序方法。
假设我们有一个名为“StudentData”的工作表,其中包含学生的姓名、年龄和分数信息。
我们想要按照分数降序排序学生的数据。
下面是一个VBA代码实例,展示了如何使用VBA进行排序:```Sub SortData()Dim ws As WorksheetDim lastRow As Long'获取当前活动工作表Set ws = ActiveSheet'获取数据区域的最后一行lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row'按照分数降序排序数据ws.Sort.SortFields.Clearws.Sort.SortFields.Add Key:=ws.Range("C2:C" & lastRow), _SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormalWith ws.Sort.SetRange ws.Range("A1:C" & lastRow).Header = xlYes.MatchCase = False.Orientation = xlTopToBottom.SortMethod = xlPinYin.ApplyEnd WithEnd Sub```以上代码首先获取当前活动工作表,并通过“lastRow”变量获取数据区域的最后一行。
利用VBA实现自动排列打印考试座次表
用VBA实现自动排列、打印考试座次表考试是学校考查教师教学效果,教师了解学生学习情况,从而提高教学质量的一项常规工作,也是国家选拔人才的重要手段。
编排考试座次表这种简单重复的工作,以前考务人员采用复制、粘贴的手段来编排、打印,耗费了大量时间和精力。
本人利用VBA制作的这个软件,能自动编排打印考试座次表,从而轻松完成上述工作,为你节约大量的时间和精力。
一、准备工作1、在Excel中建立一个有5张工作表的工作薄,将其名称分别改为:考生名单、40人顺序打印、按30人首尾相连、按40人首尾相连、按50人首尾相连;2、将“考生名单”工作表按如图1格式建好,要求:第一行为标题,第一列存放考号数据,第二列存放班次数据,第三列为姓名,以后各列可有可无,然后按考号(或班次或总分等)排好顺序。
3、将工作表“40顺序打印”、“按30人首尾相连”、“按40人首尾相连”、“按50人首尾相连”分别按图2、图3、图4、图5格式建好。
其中标题文字、行列的宽高、字体、字型、字号等可按自己的需要作相应的改动。
图1二、编写VBA代码1、按“40人顺序打印”代码在“40人顺序打印”工作表中添加一个“按钮”控件,在“指定宏”窗口中将宏名改为“40人顺序打印”,单击新建,然后在代码窗口中输入以下头代码:Sub 按40人打印()Dim ipage As Integer, page As Integer, line As Integer, x As Integer,y as Integer, icount As IntegerApplication.ScreenUpdating = Trueicount = Sheets("考生名单").[a1].CurrentRegion.Rows.Count – 1 //统计考生人数If icount / 40 = Int(icount / 40) Then //计算考室数ipage = icount / 40Elseipage = Int(icount / 40) + 1End IfSheets("40人顺序打印").SelectFor page = 0 To ipage – 1 //为1至最后考室编排座次Cells(1, 10) = page + 1 //在第一行第十列填写考室序号line = page * 40 + 2 //在”考生名单”中查找本考室第一列第一名考生For x = 4 To 11 //为4至11行填写数据For y=1 to 19 //为每一行中1至9列中不被4整除的列填写考号、班次、姓名if y/4<>int(y/4) thencells(x,y)=Sheets("考生名单").Cells(line+(int(y/4)*8),y-int(y/4)*4) //将”考生名单”中”考号”、“班次”、End If //“姓名”填入座次表相应座位中Next yline = line + 1 //考生下移一位Next xSheets("40人顺序打印").PrintOut //打印本考室座次表Next pageEnd Sub图22、“按30人首尾相连”打印代码操作如前“40人顺序打印”,代码如下(部分语句注解同前):Sub 按30人首尾相连()Dim ipage As Integer, page As Integer, line As Integer, x As Integer, y As Integer,icount As IntegerApplication.ScreenUpdating = Trueicount = Sheets("考生名单").[a1].CurrentRegion.Rows.Count - 1If icount / 30 = Int(icount / 30) Thenipage = icount / 30Elseipage = Int(icount / 30) + 1End IfSheets("按30人首尾相连").SelectFor page = 0 To ipage - 1Cells(1, 8) = page + 1line = page * 30 + 2 //查找第一列第一位考生For x = 4 To 11 //填写考室第一列考生数据For y= 1 to 3 //填写本列每一考生数据Cells(x, y) = Sheets("考生名单").Cells(line, y)Next yline = line + 1 //考生下移一位Next xline = page * 30 + 16 //查找第二列第一位考生For x = 5 To 11 //填写考室第二列考生数据For y = 5 To 7 //填写本列每一考生数据Cells(x, y) = Sheets("考生名单").Cells(line, y - 4)Next yline = line – 1 //考生前移一位Next xline = page * 30 + 17 //查找第三列第一位考生For x = 5 To 11 //填写考室第三列考生数据For y = 9 To 11Cells(x, y) = Sheets("考生名单").Cells(line, y - 8)Next yline = line + 1 //考生下移一位Next xline = page * 30 + 31 //查找第四列第一位考生For x = 4 To 11 //填写考室第四列考生数据For y = 13 To 15Cells(x, y) = Sheets("考生名单").Cells(line, y - 12)Next yline = line – 1 / /考生前移一位Next xSheets("按30人首尾相连").PrintOutNext pageEnd Sub图33、“按40人首尾相连”打印代码操作如前“40人顺序打印”,代码如下(部分语句注解同前):Sub 按40人首尾相连()Dim ipage As Integer, page As Integer, line As Integer, x As Integer, y As Integer, icount As IntegerApplication.ScreenUpdating = Trueicount = Sheets("考生名单").[a1].CurrentRegion.Rows.Count - 1If icount / 40 = Int(icount / 40) Thenipage = icount / 40Elseipage = Int(icount / 40) + 1End IfSheets("按40人首尾相连").SelectFor page = 0 To ipage - 1Cells(1, 10) = page + 1line = page * 40 + 2For y = 1 To 5For x = 4 To 11If y / 2 <> Int(y / 2) Then //排列奇数列考生数据,下面三行语也可采用一个循环语句实现Cells(x, (y - 1) * 4 + 1) = Sheets("考生名单").Cells(line + (y - 1) * 8, 1)Cells(x, (y - 1) * 4 + 2) = Sheets("考生名单").Cells(line + (y - 1) * 8, 2)Cells(x, (y - 1) * 4 + 3) = Sheets("考生名单").Cells(line + (y - 1) * 8, 3)line = line + 1Else //填写偶数列考生数据Cells(x, (y - 1) * 4 + 1) = Sheets("考生名单").Cells(line + (y - 1) * 8 - 1, 1)Cells(x, (y - 1) * 4 + 2) = Sheets("考生名单").Cells(line + (y - 1) * 8 - 1, 2)Cells(x, (y - 1) * 4 + 3) = Sheets("考生名单").Cells(line + (y - 1) * 8 - 1, 3)line = line - 1End IfNext xNext ySheets("按40人首尾相连").PrintOutNext pageEnd Sub图44、“按50人首尾相连”打印代码操作如前“40人顺序打印”,代码如下(部分语句注解同前):Sub 按50人首尾相连()Dim ipage As Integer, page As Integer, line As Integer, x As Integer, y As Integer, icount As Integer Application.ScreenUpdating = Trueicount = Sheets("考生名单").[a1].CurrentRegion.Rows.Count - 1If icount / 50 = Int(icount / 50) Thenipage = icount / 50Elseipage = Int(icount / 50) + 1End IfSheets("按50人首尾相连").SelectFor page = 0 To ipage - 1Cells(1, 9) = page + 1line = page * 50 + 2For y = 1 To 5For x = 4 To 13If y / 2 <> Int(y / 2) ThenCells(x, (y - 1) * 4 + 1) = Sheets("考生名单").Cells(line + (y - 1) * 10, 1)Cells(x, (y - 1) * 4 + 2) = Sheets("考生名单").Cells(line + (y - 1) * 10, 2)Cells(x, (y - 1) * 4 + 3) = Sheets("考生名单").Cells(line + (y - 1) * 10, 3)line = line + 1ElseCells(x, (y - 1) * 4 + 1) = Sheets("考生名单").Cells(line + (y - 1) * 10 - 1, 1)Cells(x, (y - 1) * 4 + 2) = Sheets("考生名单").Cells(line + (y - 1) * 10 - 1, 2)Cells(x, (y - 1) * 4 + 3) = Sheets("考生名单").Cells(line + (y - 1) * 10 - 1, 3)line = line - 1End IfNext xNext ySheets("按50人首尾相连").PrintOutNext pageEnd Sub图5以上几种编排方案已基本上满足各种考试的需要,如有其它格式的需要,只需参考上面代码作相应改动即可,相信它定能为你的工作带来极大的方便。
基于Visual Basic的考试座位号随机排序
2020.06Visual Basic 是在Windows 操作平台下,用于开发和创建具有图形用户界面的应用程序的强有力工具之一。
它以人们熟悉的Basic 语言为基础,不仅易于学习、掌握,它的可视化特性,还为应用程序的界面设计提供了更迅速的途径。
Visual Basic 是在Windows 环境下运行的,那么Windows 本身提供了数以千计的应用程序接口(API)函数,这些函数存放在不同的动态链接库中,按其功能可划分为3大类动态链接库以及许多小的动态链接库。
API 函数分为两种,即16位的API 和32位的API。
Vi⁃sual Basic 可以直接调用所有的Win32API 函数,Visual Basic 的图形方法是经过包装的API 函数。
在Visual Ba⁃sic 中使用API 函数之前必须先进行声明。
在当代科学技术迅速发展的今天,教务工作在学校教育工作中的地位越来越突出。
面对高校的扩招,学生人数的增加,教室资源有限,为了更好组织学生平时的测试工作,杜绝学生考试作弊行为的发生,教务人员在安排考生、考场时,大多采用手工安排考场,这不仅工作效率低,而且也不能真正实现考生考试座位号的随机排序。
由于计算机具有速度快,处理能力强等特点,很自然进入这一应用领域中。
本人在Windows 环境下利用Visual Basic6.0设计开发了考生考试座位号随机排序的工具,可真正实现考生考试座位号的随机排序、预览功能、打印功能。
1基本框架工具采用面向对象的程序随机(OOP)技术和图形用户界面(GUI)操作方式,即使是不会操作计算机的人员也能很快学会对此软件的使用,基本结构如图1所示。
2功能实现2.1考生座位号的输入采用Inputbox 函数的方法进行考生考试座位号的输入。
在触发“开始排序”事件后自动弹出Inputbox 函数对话框,进行考生考试号的输入。
输入时应注意:(1)输入的必须是英文逗号、间隔号、阿拉伯数字,不能含有其他字符;(2)考生考试座位号的最大长度为4位;(3)不能有重复号码输入。
Excel VBA在学时教务工作中的运用
Excel VBA在学校教务工作中的使用2010年6月6日目录1项目背景 (1)2具体操作步骤 (1)2.1考试用座位标签 (1)2.1.1制作考试座位标签 (1)2.1.2使用举例 (3)2.2考试用门签 (9)2.2.1 制作考试门签 (9)2.2.2 使用举例 (10)2.3考试用各班学生安排表 (13)2.3.2使用举例 (14)2.4考试用教师监考表 (17)2.4.1 监考安排表 (17)2.4.2使用举例 (18)2.5学生成绩单 (21)2.5.1 成绩单打印 (21)2.5.2使用举例 (22)2.6学校课表 (25)2.6.1 课表生成 (25)2.6.2使用举例 (26)3展望 (29)4.附录 (30)4.1在O FFICE2007中畅通运行宏 (30)4.2在O FFICE 2003中畅通运行宏 (32)1项目背景微软公司开发的Microsoft Office系列软件在全世界应用非常广泛,其中的Excel电子表格具有非常强大的数据处理功能,自Excel 2000版本起,附带了VBA(Visual Basic For Application)编程语言。
该语言与Excel结合紧密,具有强大的数据(在计算机中,图片、声音、文字等信息均称为数据)处理功能。
随着计算机的大量普及,使用Excel实行数据处理的人越来越多,宣汉中学在教务工作中常用Excel实行统考坐位标签的制作、学生成绩管理、教师排课等。
可在很多时候它的强大功能因为各方面的原因没能充分发挥出来。
学校教务工作在学校日常工作中起着十分重要的作用。
学校教务工作比较复杂,但现在计算机大量普及,数字技术飞速发展,如果将信息技术、网络技术、数字技术使用于学校日常教务工作,将减少大量错误,大幅度提升工作效率,让学校教务工作焕然一新。
宣汉中学现有学生9100余人,在职教职工500余人。
教务工作很多时候会涉及到大量的数据处理,例如:各年级每期至少实行两次统一考试,除此之外,全宣汉县还要统一实行一年一度的毕业会考、高考、中考、期末考试。
考试座位编排vba
考试座位编排vba考试座位编排vba程序开发的准备在开发⼩程序前,⾸先要了解“缅茄杯”对座位编排的具体要求。
“缅茄杯”的考⽣来⾃⾼州市61所初级中学(每所中学的考⽣⼈数由3到400不等,总⼈数1848)。
每个试室⼈数限额是30⼈,按5组6⾏编排。
考⽣的座位是随机的并且来⾃同⼀个学校的考⽣的座位前后左右都不能相邻。
其次选⽤⼀个好⽤的开发软件,本⼈就⽤⾃⼰⽐较常⽤的“VB”。
程序的开发程序的开发,是最重要的,⽽且⼜是最艰难的⼀环⼯作,主要⼯作是代码的编写,它要求“算法”精简优化,操作简单,通⽤好⽤,这⾥我按以下⼏部分进⾏设计。
⼀、数据的导⼊“缅茄杯”的考⽣在报名时,是由学校统⼀上送的。
上送的名单是⽤“EXCELL”格式的⽂件上送的,考⽣的详细信息如下图所⽰:为此程序的第⼀部⼯作是完成考⽣基本数据的导⼊。
其代码编写为:Dim ap As Excel.ApplicationDim bk As Excel.WorkbookDim st1 As Excel.WorksheetSet ap = CreateObject("Excel.Application")cd.DialogTitle = "打开EXCEL⽂件"cd.Filter = "*.xls|*.xls"cd.ShowOpenIf cd.FileName = "" Then MsgBox ("⽂件不能为空"): Exit SubSet bk = ap.Workbooks.Open(cd.FileName)Set st1 = bk.Worksheets(1)cols = 1rows = 1'cells(⾏,列)With st1Do Until .Cells(rows, 1).Value = ""'表格⾏数rows = rows + 1LoopEnd Withrenshu = rows - 2For i = 1 To renshub(i) = Trim(st1.Cells((i + 1), 1).Value)c(i) = Trim(st1.Cells((i + 1), 3).Value)xb(i) = Trim(st1.Cells((i + 1), 4).Value)Next ibk.Closeap.QuitSet ap = Nothing⼆、座位的编排这是程序开发的中⼼环节,我设计的思路简单描述是这样的:先为每个学⽣添加⼀个各不相同的随机数字(⼀⾄考⽣总⼈数,这⾥就是1~1848),再把考⽣按这些随机数按升序的顺序排列,依次编排到第⼀个试室⾄最后⼀个试室的1~30的座位中,然后按试室和座位的顺序对每⼀个考⽣进⾏检查,检查他的前后左右是否有同学校的考⽣,如果有则对他进⾏调整。
应用VBA轻松编排考试试场
应用VBA轻松编排考试试场【摘要】为了防止学生考试时作弊,有利于班级的管理和教学,本文结合自己的工作经验总结出了一种科学合理地安排考试试场的方法,每次考试编排试场时考生单人单桌,考生座位随机编排,而且前后座位不是同班的同学,同时打印出贴在试场桌子的考生标签。
【关键词】随机函数;四舍五入函数;VBA代码;主要关键字;排序为了尽量防止考生考试时作弊,得到考生比较的真实的成绩,每次考试学校都要求编排试场时学生单人单桌,而且前后座位不能是同班的同学,同时打印出贴在试场桌子的考生标签。
为此笔者在Excel中用VBA代码轻松实现了学校的要求。
一、试场安排表的设置试场安排表设有“班别”、“人数”、“桌子数”、“试场”、“考生人数”共五列,由于我校是俩学生同坐一张课桌,可以利用四舍五入函数取得桌子数:ROUND (B2/2,0),根据桌子数安排考生人数。
二、贴班级教室表的设置1、思路:分别以随机数和班级为关键字段进行排序,确保每次考生座位随机编排,为了防止前后座位是同班的同学,以人数最多的班级为准先给“贴班级教室”表中的考号赋临时值,按照先排奇数考号再排偶数考号,然后按“考号”字段排序,即可实现同一个班的考生的考号不连续。
最后根据“试场安排表”的顺序给考生赋连续的考号和对应的试场教室。
2、代码:(1)右击工作表标签,在出现的快捷菜单中单击“查看代码”,打开代码设计窗口。
(2)在代码窗口中执行命令“插入/模块”,插入模块1。
(3)录入代码如下:Sub Macro1()Application.ScreenUpdating = FalseDim i As Integer ’定义整型变量用于循环操作Dim j As Integer ’定义整型变量给“贴班级教室”表中的考号赋临时值Dim n As Integer ’定义整型变量给“贴班级教室”表中的考号赋值Dim k As Integer ’定义整型变量定位写入的单元格Dim mj As Integer ’定义整型变量输入人数最多的班级的人数Dim row1 As Integer ’定义整型变量存放“试场安排”表的行数Dim row2 As Integer ’定义整型变量存放“贴班级教室”表的行数Dim y As Integer ’定义整型变量存放“试场安排”表中考生人数Dim c As String ’定义字符串变量存放“试场安排”表中试场教室Dim s As String ’定义字符串变量存放按考号进行排序时的右下角单元格标记’以下代码分别以随机数和班级为关键字段进行排序Sheets(”贴班级教室”).Selectrow2 = Sheets(”贴班级教室”).[a1].CurrentRegion.Rows.Counts = “F” + Trim(Str(row2))Range(”A1”).SelectRange(”A2:” + s).Sort Key1:=Range(”F2”),Order1:=xlAscending,Header:= _xlGuess,OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,_SortMethod:=xlPinYin,DataOption1:=xlSortNormals = “E” + Trim(Str(row2))Range(”A1”).SelectRange(”A2:” + s).Sort Key1:=Range(”C2”),Order1:=xlAscending,Header:= _xlGuess,OrderCustom:=1,MatchCase:=False,Orientation:=xlTopToBottom,_SortMethod:=xlPinYin,DataOption1:=xlSortNormal’以下代码用于在“贴班级教室”表中给各班级考生的考号赋临时值mj = InputBox(”请输入人数:”,”人数最多的班级”)1、思路:把前面生成的“贴班级教室”表复制两份,分别改名为“贴试场门外”表和“贴试场桌”表,贴试场的桌子的标签要求要有栏头和分割线,首先在“贴试场桌”表第一行插入一空行,再此设计好分割线,然后从第一个考生记录开始在后面插入两个空行,并把第一行的“分割线”和第二行的“栏头”复制到插入的两个空行中,删除最后一行多余的栏头和第一行的“分割线”以便方便排版打印2、代码:(1)右击工作表标签,在出现的快捷菜单中单击“查看代码”,打开代码设计窗口。
制作座次表
制作座次表学习目标(1)学会使用“合并单元格”(2)学会为表格添加边框(3)学会打印预览表格为了方便教学及课堂管理,下面我们介绍一下如何制作座次表。
(一)录入“学生“数据利用我们前面所学内容,我们首先输入一个7行×5列的座次表。
(二)制作“讲桌”单元格我们首先在B8中输入“讲桌”,然后选中B8 : D11的区域,单击“格式”工具栏的“合并及居中”按钮,或者单击鼠标右键,选择“设置单元格格式”中的“对齐”,单击“文本控制”下的“合并单元格”。
这样一个相对于学生座位较大的一个“讲桌”单元格就做好了。
如图:(三)美化座次表首先选中学生座位表,单击“格式”工具栏中的“边框”按钮旁边的黑色“下拉小三角”,在弹出的选项中我们可以看到有“下框线、左右框线、粗底框线”等,我们选择“所有框线”,然后我们再用同样的方法,选择“粗匣框线”,这样我们的学生的座位表就更加美观了。
同样,我们选中“讲桌”单元格,也把它设置成“粗匣框线”。
这样,一个美观大方、实用得体的座次表就做好了。
如图:(四)打印预览座次表我们制作座次表的目的是打印出来粘贴在教室里供教师使用,所以我们必须把它打印出来,但为了不浪费纸张,Excel还为我们提供了“打印预览”功能。
在装有打印机设备的电脑上,我们可以单击“文件”菜单中的“打印预览”按钮,进行预览。
我们预览后发现我们想使这张纸横向排版,而且使座次表位于这张纸的中间位置,我们可以单击“文件”菜单中“页面设置”,“页面方向”选择“横向”,如图:在“页边距”中选择“水平居中”。
如图:如果在打印预览过程中,我们还有不满意的地方我们可以单击“关闭”返回到编辑状态进行修改。
那么如果我们本地没有安装打印机,又想打印预览那怎么办呢?我们可以单击windows的控制面板,单击“打印机和其它硬件”,在弹出窗口中,选择“添加打印机”,按照“添加打印机向导”进行一下预安装,这样我们就可以在没有安装打印机的情况下顺利的进行“打印预览”了。
基于VBA的考生座位混排算法
第23卷第3期2009年6月 白城师范学院学报Journal of Ba i cheng Nor m al College Vo l .23,No .3June,2009 基于VBA 的考生座位混排算法张桂杰1a ,郑月锋2,王 月1b(11吉林师范大学1a 1计算机学院;1b 1图书馆;21吉林师范大学博达学院,吉林四平136000) 摘要:使用Office 内嵌的VBA 编程工具,介绍一种适合于有多组、少量考生考试的考号编排算法,实现同组考生的座位穿插排列,有效提高考试质量,可应用于吉林省高校教师岗前培训考务管理系统。
关键词:V BA;排序;Excel中图分类号:TP317.3文献标识码:A 文章编号:167323118(2009)0320026203收稿日期3作者简介张桂杰(———),女,吉林师范大学计算机学院助教,研究方向计算机应用;郑月锋(———),男,吉林师范大学博达学院。
引言高校教师岗前培训是一项长期而重要的职业教育工作。
在培训考试过程中,不同高校的新聘任教师要同时参加相同科目的考试,使同一高校的考生尽可能离得远就成为考号编排中的重要问题。
用Exce l 内嵌VBA 编程工具,开发排序算法实现考生位置穿插,不仅使培训管理工作自动化,而且使上述问题得到了较理想的解决。
1 需求分析及量化指标吉林省按照区域划分了长春、吉林、四平、延边等培训区,分别以01、02、03……为各区代号;各区所辖学校代号以其所在区两位代号为首,后加两位顺序号组成四位学校代号;各校考生考号以其所在学校四位代号为首,后加四位顺序号组成八位考生考号(如图1、2)。
为使同一高校考生之间实现考号穿插排列,笔者编制了考号混编程序。
图1 “信息”工作表 图2 “总表”工作表2 算法思路及流程首先,程序将本次考试分区数、考生总数、学校总数、各校代号、名称、参考人数等记入变量[1]。
然后按照分区,逐次为每个考区考生编制考号,前四位是全省唯一的考区学校代号,后四位是以本区人数为上限的顺序号,作为排考场时的座位号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<
用VBA编排学生座位表
(2011-09-10 23:10:47)
转载
分类:技术交流
标签:
it
在每学年的新生开学前,班主任老师要做大量的准备工作,其中必做的一件事就是收集本班学生的报名信息,编排上课的座位表。
以往班主任老师都是通过手工来编排座位表的,消耗的时间和精力相当大,一旦有学生进行了调整又不得不重复之前的劳动。
下面我们就来看看如何用VBA轻轻松松实现座位表的编排。
通常情况下,编排座位表需要考虑以下三个因素,即学生的视力、身高、性别等,根据学生在报名表中填写的信息,我们采集了相关的数据(如图1)。
&
利用“控件工具箱”中的“命令按钮”控件在工作表中添加一个命令按钮,修改其“Caption”属性为“排座位”,双击该按钮,在其Click事件中编写下面的代码:
Private Sub CommandButton1_Click()
On Error GoTo err
Dim fenzu As Integer
Dim irow As Integer
Range("D2").Select
'对信息表进行排序,关键字分别为视力、身高、性别
#
Range("A3:E48").Sort Key1:=Range("E3"), Order1:=xlAscending,
Key2:=Range( _
"D3"), Order2:=xlAscending, Key3:=Range("C3"), Order3:=xlAscending
'删除原有的座位表
For Each sh In Worksheets
If = "座位表" Then
= False
Sheets("座位表").Delete
End If
{
Next sh
'添加名为座位表的新工作表
after:=Sheets("学生信息")
= "座位表"
'获取分组数
fenzu = InputBox("你想把学生分成几个小组", "提示", 6)
'获取学生总人数
icount = Worksheets(1).[a65536].End(xlUp).Row - 2
'
'获取每组最多学生人数
irow = Int(icount / fenzu) + 1
'按先行后列的顺序提取学生信息表中的学生名单
For n = 1 To irow
For m = 1 To fenzu
'生成第N组的文字(前面空2行用于显示标题)
Worksheets(2).Cells(3, m) = "第" & m & "组"
Worksheets(2).Cells(n + 3, m) = Worksheets(1).Cells(fenzu * (n - 1) + m + 2, 2)
…
Next m
Next n
MsgBox "座位表编排成功,请根据实际情况手工微调!", vbOKOnly + vbInformation, "提示"
err:
Exit Sub
End Sub
代码说明:
(1)为了使编排的座位表更加合理,我们把视力低的同学尽量往前排,相同视力的同学按身高的高矮顺序排,如果身高又相同则女生排在前面,男生排在后面。
(2)考虑到学生分班后肯定会进行一些调整,所以在生成座位表前首先会检查并删除当前工作簿中原有的“座位表”工作表。
关闭代码窗口返回Excel工作表中,单击“排座位”按钮,系统首先会创建一个名为“座位表”的工作表并询问学生的分组数(默认为“6”组),根据需要输入相应的数字,单击“确定”按钮即可看到分组后的学生名单了,然后根据需要进行适当的微调就可以了。
“讲台”可通过手工插入自选图形来实现,最终的效果如图2所示。
需要说明的是,笔者的座位表是根据自己的编排理念来设计代码的,如果在编排的顺序上要进行调整只需将代码中的三个关键字的字段(视力、身高、性别)顺序以及对应的升序(xlAscending)或降序(xlDescending)关系进行相应的调整就可以了。