第六章竞赛评分模板 我们常在电视中看到各种竞赛节目。如青年歌手大赛。比赛 内容、比赛形式、比赛规则各种各样,但多数采取评委现场 打分的办法决出胜负或排出名次。评分办法一般是在多个评 委所打的分数中,去掉一个最高分,去掉一个最低分,其余 的取平均分,即为某选手一个单项的得分。竞赛的项目可能 有多个,每个项目的最高分可能不同,各项总分之和为选手 的总得分。最后根据每位选手的总得分排出名次。 在此过程中,用 Excel和VBA做一个模板,可以轻松地解决这 问题,记分、算分、排序和打印都非常方便。下面具体介 绍模板的设计和使用方法
第六章 竞赛评分模板 我们常在电视中看到各种竞赛节目。如青年歌手大赛。比赛 内容、比赛形式、比赛规则各种各样,但多数采取评委现场 打分的办法决出胜负或排出名次。评分办法一般是在多个评 委所打的分数中,去掉一个最高分,去掉一个最低分,其余 的取平均分,即为某选手一个单项的得分。竞赛的项目可能 有多个,每个项目的最高分可能不同,各项总分之和为选手 的总得分。最后根据每位选手的总得分排出名次。 在此过程中,用Excel和VBA做一个模板,可以轻松地解决这 一问题,记分、算分、排序和打印都非常方便。下面具体介 绍模板的设计和使用方法
6.1糗板的结构设计 6.2工具栏及其按纽的定义与控制 6.3通用模块代码设计 合
✓6.1 模板的结构设计 ✓6.2 工具栏及其按钮的定义与控制 ✓6.3 通用模块代码设计
棋夜的结构设计 6,21工作簿的Open事件代码 ◆62.2工作簿的 Before close事件代码 ◆6.23工作簿的 Sheetactivate事件代码 合
模板的结构设计 ❖6.2.1 工作簿的Open事件代码 ❖6.2.2 工作簿的BeforeClose事件代码 ❖6.2.3 工作簿的SheetActivate事件代码
通用模块代码设计 >6,3.1“统计” >6,32“汇总” >633“增项” >634“还原” 合
通用模块代码设计 ➢6.3.1 “统计” ➢6.3.2 “汇总” ➢6.3.3 “增项” ➢6.3.4 “还原
模板的结构设计 ◆总体上,竞赛评分模板是一个 Excel工作簿。工作簿上设计一个“信息”工 作表、一个“总分”工作表、若干个“项目”工作表,还有一个自定义工 具栏。 ◆“信息”工作表用来设置选手人数、评委人数和竞赛项目数等信息,它的 格式可仼意设置,数据根据实际情况确定,但各项信息所在单元格地址与 编程有关,不要改动 ◆“总分”工作表用来存放选手各单项分、总得分和排名信息。它在设计时 只是一个空表。当执行“汇总”程序时,自动生成有关信息。 ◆各“项目”工作表按“第1项”、“第2项”、命名,以便于程序处理 我们只需要设计出“第1项”工作表,其余的在需要时随时通过“增项”程 序生成,不用时通过“还原” ◆“第1项”工作表如图6.1所示。 其中,第一行从B列开始依次输入评委姓名,之后是“平均分”,A列从第 二行开始依次输入选手姓名 最后,根据自己的喜好设置不同单元格的背景、字符颜色和网格线。 自定义工具栏的目的是为了操作方便。工具栏命名为“比赛评分”,上面 合 定义四个命令按钮:“统计”、“汇总”、“增项”和“还原”。“汇 总”、“增项”和“还原”功能前面已提到过,“统计”的用途是对指定 一的选手求单项平均分,即在各位评委的打分中,去掉最高分和最低分并做
模板的结构设计 总体上,竞赛评分模板是一个Excel工作簿。工作簿上设计一个“信息”工 作表、一个“总分”工作表、若干个“项目”工作表,还有一个自定义工 具栏。 “信息”工作表用来设置选手人数、评委人数和竞赛项目数等信息,它的 格式可任意设置,数据根据实际情况确定,但各项信息所在单元格地址与 编程有关,不要改动。 “总分”工作表用来存放选手各单项分、总得分和排名信息。它在设计时 只是一个空表。当执行“汇总”程序时,自动生成有关信息。 各“项目”工作表按“第1项”、“第2项”、……命名,以便于程序处理。 我们只需要设计出“第1项”工作表,其余的在需要时随时通过“增项”程 序生成,不用时通过“还原”程序删除。 “第1项”工作表如图6.1所示。 其中,第一行从B列开始依次输入评委姓名,之后是“平均分” ,A列从第 二行开始依次输入选手姓名。 最后,根据自己的喜好设置不同单元格的背景、字符颜色和网格线。 自定义工具栏的目的是为了操作方便。工具栏命名为“比赛评分” ,上面 定义四个命令按钮:“统计”、“汇总”、“增项”和“还原”。“汇 总”、“增项”和“还原”功能前面已提到过, “统计”的用途是对指定 的选手求单项平均分,即在各位评委的打分中,去掉最高分和最低分并做 上颜色标记,求出平均分
G 评委1评委2评委3评委4评委5评委6评委7评委8平均分 2选手1 3选手2 4选手 5选手4 6选手5 7选手6 8选手7 9选手8 10选手9 11选手10 12 4p信息人总分第1项第2项/第3项/
621工作簿的Open事件代码 对工作孳的OPEN事件编写具体代码。 程序中,首先建立一个工具栏。命名为“比 赛评分”。然后,在工具栏上添加四个命令按 扭:“統讣 汇总”、“增项”和“还 原”,分别指定要执行的过程:“tj”、“hz” “zx”和“hy”,这四个过程在通用模块(模块1 口中定义(见第三节)。最后,设置工具栏的可 见属性。选择“信息》为当前工作表,使工具 合栏“统计”换钮不可用
6.2.1 工作簿的Open事件代码 对工作簿的OPEN事件编写具体代码。 程序中,首先建立一个工具栏,命名为“比 赛评分”。然后,在工具栏上添加四个命令按 钮:“统计” 、 “汇总” 、 “增项”和“还 原”,分别指定要执行的过程:“tj” 、 “hz” 、 “zx”和“hy” ,这四个过程在通用模块(模块1) 中定义(见第三节)。最后,设置工具栏的可 见属性,选择“信息”为当前工作表,使工具 栏“统计”按钮不可用
62.2工作簿的 Before close事件代码 Before close事件在工作簿关闭之前产 生,在此删除“比赛评分”工具栏。 Private Sub Workbook before close( cancel as Boolean) Application. CommandBars("比赛评分 ). Delete End sub
6.2.2 工作簿的BeforeClose事件代码 BeforeClose事件在工作簿关闭之前产 生,在此删除“比赛评分”工具栏。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.CommandBars(" 比赛评分 ").Delete End Sub
623工作簿的 Sheetactivate 事件代码 SheetActivate事件在工作簿的当前工作表欧变时产生,在此对工具 栏中按扭的可用性选行控制。如景当前工作表为“总分”或“信 息”,则使工具栏“統计”按钮不可用,否则可用。 Private Sub Workbook SheetActivate( By Val Sh As Object) If ActiveSheet. Name=“总分” Or activeSheet.Name=“信息” Then butt1 enabled= False Else butt1 enabled True End if 合 End sub
6.2.3 工作簿的SheetActivate 事件代码 SheetActivate事件在工作簿的当前工作表改变时产生,在此对工具 栏中按钮的可用性进行控制。如果当前工作表为“总分”或“信 息” ,则使工具栏“统计”按钮不可用,否则可用。 Private Sub Workbook_SheetActivate(ByVal Sh As Object) If ActiveSheet.Name = “总分” Or ActiveSheet.Name = “信息” Then butt1.Enabled = False Else butt1.Enabled = True End If End Sub
6.3.1“统升” 统计当前工作表(竞赛的某一项)任意选手的平均分,并用不同颜色 标记最高、最低分。 在“信息”工作表的B2单元格取出评委人数,在当前工作表中指定选 手的行中,对各位评委所打分数进行累加,挑出一个最高分一个最 低分,对所在的单元各设置不同的背景颜色,以示区别,最后求出 平均分,填入“平均分”列,并设置平均分单元格另一背景颜色 编写具体代码。 假设有8位评委,10位选手参赛,“第1项”满分为10分,各评委给 1号选手的打分已输入工作表对应的单元格,单击“统计”命令按 钮,就可以标记岀该选手的最高分、最低分,并把平均分填入指定 的单元格。各位选手的打分输入并统计之后,得到如图6.2所示的结 果。假设“第2项”满分为20分或“第3项”满分为5分,各评委给 各位选手的打分输入并统计之后,将会得到不同的结果。 合
6.3.1 “统计” 统计当前工作表(竞赛的某一项)任意选手的平均分,并用不同颜色 标记最高、最低分。 在“信息”工作表的B2单元格取出评委人数,在当前工作表中指定选 手的行中,对各位评委所打分数进行累加,挑出一个最高分一个最 低分,对所在的单元各设置不同的背景颜色,以示区别,最后求出 平均分,填入“平均分”列,并设置平均分单元格另一背景颜色。 编写具体代码。 假设有8位评委,10位选手参赛,“第1项”满分为10分,各评委给 1号选手的打分已输入工作表对应的单元格,单击“统计”命令按 钮,就可以标记出该选手的最高分、最低分,并把平均分填入指定 的单元格。各位选手的打分输入并统计之后,得到如图6.2所示的结 果。假设“第2项”满分为20分或“第`3项”满分为5分,各评委给 各位选手的打分输入并统计之后,将会得到不同的结果