APP下载

巧用ExcelVBA设计高效便捷的计时评分系统

2018-01-09焦丽萍袁勤

电脑知识与技术 2017年34期
关键词:设计

焦丽萍+袁勤

摘要:本文巧用EXCEL强大的计算功能,设计了简单、高效、便捷的计时评分系统,并介绍了计时动态显示、计时评分联动等主要功能模块的实现方法。

关键词:VBA;计时评分系统;设计

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)34-0201-02

Abstract: This paper uses EXCEL's powerful computing function, designs a simple, efficient and convenient timing and marking system, and introduces the Implementation method ofits main function modules, such as timing dynamic display, the linkage of timing and scoring and so on.

Key words: VBA;Timing and Marking system; Design

竞赛评比是当前贯彻能力素质教育教学中不可或缺的教学环节。与之相适应,借助信息化手段,实施客观、公正、高效、便捷的现场计时、评分对竞赛活动效果起到非常重要的作用[1]。虽然目前已有利用C、C#、ASP等语言编写了专门的竞赛评分系统,但由于竞赛中评委数量易变、评分规则灵活,往往给程序的修改、打包、安装及维护带来了诸多麻烦[2]。因此,巧用EXCEL的强大计算功能,结合简单的VBA技术,自制简单、高效、便捷的计时评分系统显得尤为重要。

1 计时评分系统基本要求

该系统除具备现场计时、评分的功能外,使用时通常为彰显客观公正,往往用大屏幕现场公布,因此,还应具有一定的全屏视觉效果。另外,在使用时还应考虑系统的人性化设计,如:当前选择的选手进行现场计时时,应在计时屏显示其姓名,计时结束时应自动获取其用时信息并填写至对应的“比赛用时”一栏,若评分规则中有超时扣分项,还应自动计算出用时扣分分值等等。

2 计时评分系统的整体结构

系统根据基本要求来看,应包括三个界面,即计时界面、评分界面以及用于存储系统比赛用时、超时界定、记分时是否去最值等比赛规则及基本信息的设置界面,而且后期需进行VBA编程,因此,可建一个启用宏的Excel工作簿文件,内含三个工作表,工作表名分别为“计时”、“评分”、“规则”。为使系统具有更好的视觉效果可制作一张背景图,置于各工作表中。

“计时”工作表主要用于动态显示时钟,并具有计时功能。界面设计可通过添加ActiveX控件来实现。具体如图1所示。

“评分”工作表主要用于具体成绩详情及当前排名的显示,界面如图2所示,具体功能主要是借助Excel强大的If()、Sum()、Rank()函数、公式及自動填充功能来实现。

“规则”工作表主要用于存储系统基础数据。如标准用时、超时上限、超时下限、每分钟扣分量、计算平均分时是否去最值等信息,该表为常规的二维表,主要针对开发人员使用,当系统制作完毕可将其隐藏。

3 主要功能模块的实现

3.1计时器动态的显示

即在计时工作表中,当单击“计时开始”按钮,系统将记录当前用时的计时标签的标题属性每间隔1秒,变化一次,以达到动态显示的目的。当单击“计时结束”按钮,停止变化和计时。在VB中利用计时器控件很容易实现该功能,但在Excel 的ActiveX控件集中并无计时器控件,但可利用Excel VBA中Application.OnTime方法,该方法可安排一个过程在将来的特定时间运行。这里的特定时间既可以是具体指定的某个时间,也可以是指定的一段时间之后。具体实现时可将该功能事件置于VBA公共模块中来实现,事件定义完毕,在计时工作表中只需在单击相应按钮中调用即可。

模块中,用于动态显示选手用时事件GoTime()及停止动态显示事件StopTime()的具体代码如图3所示。

在计时工作表中,创建“开始计时”按钮的单击事件,事件中调用GoTime()事件;并创建“停止计时”按钮的单击事件,事件中调用StopTime()事件。

3.2 当前选手在“计时”、“评分”工作表中的联动设计

所谓“计时”、“评分”工作表的联动设计是指,当在“评分”工作表中,选择了某位选手后,当跳转至“计时”工作表时,在计时工作表中会显示当前被选选手的姓名,当单击“计时结束”按钮,此选手的比赛用时及超时扣分项,系统会自动计算出来,并填写在“评分”表中该选手相应的信息栏中。若“评分”工作表的当前活动单元格尚未定位在选手姓名一栏,则系统会给出信息提示,计时结束后,不会填写上述信息。

由于选手姓名、比赛用时以及当前选手所在行号等信息需在2个不同工作表间相互调用,故可定义相应的全局变量来辅助实现;首先利用“评分”工作表的SelectionChange()事件监测当前活动单元格的行号和列号,并存于全局变量中;其次利用“评分”工作表的Deactivate()()事件来监测用户是否选择了选手,若已选选手,则显示姓名,若未选择则弹出提示信息,如图2所示工作表,其具体代码如图4所示:

当在“计时”工作表中,单击计时结束按钮后,继续利用全局变量进行用时计算和超时处理。具体代码如图5所示。

3.3 根据评分规则的智能化设置

评分规则的智能化设置是指在具体评分时,由于评分规则不同,有时计算评委平均分时,通常需要去最值(最高分、最低分),而有时则无需去最值;有时超时需要扣分,而有时超时不需要扣分,而且扣分的标准也各不相同,如果按常规方法去设计,这会为后续系统的更新、维护带来很多不便,所以,根据这种情况,为增强系统的灵活性及适应性,设计时可将上述评分规则进一步抽象,在“规则”工作表中通过系统的“是否去最值”属性、“超时是否扣分”属性、“超时扣分标准”属性来表示。而在“评分”工作表中进行具体计算平均分、超时扣分、最终得分三项时对上述三个属性值进行外部引用,进而实现了系统的智能化设计。

计算平均分公式(假设当前有5个评委):

=IF(规则!$B$6=0,SUM(D2:H2)/5,(SUM(D2:H2)-MAX(D2:H2)-MIN(D2:H2))/(5-2))

计算超时扣分,该值是在单击“计时结束”按钮时进行计算,即在VBA编码中进行,其具体算法如图5所示。

计算最后得分公式:=IF(评分!B7=1,I2-J2,I2)。

以上三步关键计算,利用IF条件函数,大大增强了系统的自适应性。

3.4系统的保护及优化

首先,为防止用户随意更改系统的结构和数据造成不必要的人为错误,可利用Excel工作簿、工作表的保护操作将“计时”工作表、“评分工作表”以及整个工作簿文件进行保护。同时,为防止他人肆意更改VBA代码也可将VBA工程加密。其次,为使系统达到更好的全屏显示效果可利用视图选项卡,将编辑栏隐藏,并以全屏的形式打开系统。当然也可在VBA代码中利用工作表的打开事件编写代码,使系统一打开就以全屏模式打开。其代码如下:

4 结束语

借助VBA技术在Excel中设计实现计时评分系统,主要是借助了Excel强大的公式、函数等数据计算能力,利用简单的VBA技术实现了比赛用时的动态显示功能,既有很好的视觉效果,同时又达到了评分计算即时、准确的数据运算功能,而且相对常规的计时评分系统而言,程序编写技术简单、系统后期的更新与维护都十分简便,因此,可为教育工作助力提高教学效果。

参考文献:

[1] 王继文.自动计时评分系统在智能楼宇实训台中的应用[J].科技期刊,2015(10).

[2] 牛军,王萍等.无线电子打分计分系统的设计与实现[J].南阳理工学院学报,2015(4).endprint

猜你喜欢

设计
何为设计的守护之道?
瞒天过海——仿生设计萌到家
设计秀
有种设计叫而专
设计之味