PPT中VBA编程制作随机抽题系统

2017-03-06 17:21侯伟吴锦杨袁龙华
电脑知识与技术 2016年30期
关键词:倒计时微信公众号

侯伟 吴锦杨 袁龙华

摘要:本随机抽题系统以毕业答辩为例结合VBA编程和微信公众号互联网技术,改变了传统活动现场环节中的纸质化抽签及抽题的形式,同时还具有答题倒计时功能。本随机抽题系统可适用于毕业答辩、课堂教学互动、晚会现场抽奖、教学知识竞赛、面试随机抽题等需要随机抽签或抽题的场合。该系统能够使每一位在场用户通过投影仪屏幕同时看到随机所抽题目,相比传统纸质抽题更公平公正。

关键词:VBA编程;随机抽题;随机抽签;微信公众号;倒计时

中图分类号:TP37 文献标识码:A 文章编号:1009-3044(2016)30-0100-03

1背景意义

随着电子行业的突飞猛进,计算机及其应用软件走进了人们的生活,我们应该充分利用电子产品资源。例如,在高校毕业答辩、研究生入学面试等各个抽题环节中一般采用纸质化抽题,这样不仅浪费纸张、浪费碳粉,同时打印机在打印过程中所消耗电能以及微细碳粉对环境产生的危害也不可忽视。我国仍有大部分地区实行火力发电,需要消耗煤炭,而纸张来源于树皮,这些纸张、电能的消耗都间接导致温室效应,不符合国家长期发展的要求。通过微信公众号,学生在答辩环节中还可以参与投票表决互动,选出自己认为最佳答辩毕业生。在高校研究生面试、企业面试、教学知识竞赛、晚会比赛等活动中,通过使用本系统中引用的二维码技术仍然可以满足不同用户的需求。

2技术方案

本随机抽题软件可根据参赛选手总人数,自动设置抽签数量,参赛选手只需要点击“开始抽签”控制按钮便可随机滚动生成签号,此时系统状态输出显示器会显示“正在抽签”,点击“停止抽签”控制按钮即可获得自己的抽签结果,此时系统状态输出显示器会显示“您抽的是×号签”。参赛选手点击“开始抽题”控制按钮时便可高速滚动显示题目编号,此时系统狀态输出显示器会显示“正在抽题”,参赛选手点击“停止抽题”控制按钮即可随机不重复获得一个题目编号,此时系统状态输出显示器会显示“请您回答×号题”。此时点击“打开题目”控制器即可查看自己抽取的题目,参赛选手回答题目的同时,系统自动进入120s倒计时阶段,参赛选手回答完毕题目之后可以点击“参考答案”触发控制按钮得知自己回答正确与否,并且可以点击“继续抽题”触发控制器按钮进行下一轮抽题环节,所有题目抽取完毕之后,系统会自动弹框提醒参赛选手“题目已抽完,请点击初始化重新抽题!”

3代码内容

PPT中使用VBA方法目前已经有较多参考文献讲述,在此不再详述,本次随机抽题所用VBA编码如下:

Dim Canbeuse, QuestionNum1, QuestionUsed1, QuestionNum2, QuestionUsed2, arrRM, FCQXS, F As Integer

Dim flag As Boolean

Private Sub 抽取框_Change()

End Sub

Private Sub 初始化_Click()

Call CQ_do1("stop")

Call CQ_do2("stop")

Canbeuse = 1

取框.ForeColor = &HC00000

抽取框.Text = "圆融"

已抽题目.Text = ""

已抽签.Text = ""

文字描述.Text = "勤学务实 卓越"

Me.开始抽签.Caption = "开始抽签"

Me.开始抽题.Caption = "开始抽题"

QuestionNum2 = ActivePresentation.Slides.Count - 1

题目总数.Text = QuestionNum2

End Sub

Private Sub 开始抽签_Click()

抽取框.ForeColor = &HFF&

If Me.开始抽签.Caption = "停止抽签" Then

Me.开始抽签.Caption = "开始抽签"

Call CQ_do1("stop")

Else

Me.开始抽签.Caption = "停止抽签"

Call CQ_do1("start")

End If

End Sub

Private Sub CQ_do1(doTag)

QuestionNum1 = 总人数.Text

QuestionUsed1 = Split(Me.已抽签, " , ", -1, 1)

Canbeuse = 1

If doTag = "start" Then

F = 0

If UBound(QuestionUsed1) < QuestionNum1 Then

Dim n As Integer

Randomize '初始化随机函数

Do

'Sleep 30

n = Int((QuestionNum1) * Rnd + 1) 'n为随机抽取的数值,设置为从1-QuestionNum里抽取

抽取框.Text = n

If 开始抽签.Caption = "开始抽签" Then

文字描述.Text = "您抽的是 号签"

Else

文字描述.Text = "正在抽签"

End If

If F = 1 Then

Dim J, m

Canbeuse = 1

For J = 1 To UBound(QuestionUsed1)

m = QuestionUsed1(J - 1)

If QuestionUsed1(J - 1) = n Then

Canbeuse = 0

Exit For

Else

End If

Next

If Canbeuse = 1 Then

已抽签 = 已抽签 + 抽取框.Text + " , " '题目标记用 , 分隔

Exit Do

End If

End If

DoEvents

Loop

Else

MsgBox ("抽签结束,请准备抽题。")

End If

Else

F = 1

End If

End Sub

Private Sub 开始抽题_Click()

抽取框.ForeColor = &HFF&

If Me.开始抽题.Caption = "停止抽题" Then

Me.开始抽题.Caption = "开始抽题"

Call CQ_do2("stop")

Else

Me.开始抽题.Caption = "停止抽题"

Call CQ_do2("start")

End If

End Sub

Private Sub CQ_do2(doTag)

QuestionNum2 = ActivePresentation.Slides.Count - 1

QuestionUsed2 = Split(Me.已抽题目, " , ", -1, 1)

Canbeuse = 1

If doTag = "start" Then

F = 0

If UBound(QuestionUsed2) < QuestionNum2 Then

Dim n As Integer

Randomize '初始化隨机函数

Do

'Sleep 30

n = Int((QuestionNum2) * Rnd + 1) 'n为随机抽取的数值,设置为从1-QuestionNum里抽取

抽取框.Text = n

If 开始抽题.Caption = "开始抽题" Then

文字描述.Text = "请您回答 号题"

Else

文字描述.Text = "正在抽题"

End If

If F = 1 Then

Dim J, m

Canbeuse = 1

For J = 1 To UBound(QuestionUsed2)

m = QuestionUsed2(J - 1)

If QuestionUsed2(J - 1) = n Then

Canbeuse = 0

Exit For

Else

End If

Next

If Canbeuse = 1 Then

已抽题目 = 已抽题目 + 抽取框.Text + " , " '题目标记用 , 分隔

Exit Do

End If

End If

DoEvents

Loop

Else

MsgBox ("题目已抽完,请点击初始化重新抽题!")

End If

Else

F = 1

End If

End Sub

Private Sub 打开题目_Click()

If 抽取框.Text = "圆融" Then

MsgBox ("请先抽题!")

ElseIf 开始抽题.Caption = "停止抽题" Then

MsgBox ("请点击停止抽题!")

ElseIf 开始抽签.Caption = "停止抽签" Then

MsgBox ("抽题环节请勿抽签!")

Else

ActivePresentation.SlideShowWindow.View.GotoSlide Val(抽取框.Text + 1)

End If

End Sub

4结论

与现有技术相比,本次设计的随机抽题系统具有以下优点:

1)无需用户手动统计题目总数量,通过“初始化”控制器按钮自动查询数据库题目数量,并将题目数量发送至抽题控制器,实现将抽取题目编号变化范围自动限定在题目总数量以内功能。

2)本随机抽题软件不仅可保存用户抽题记录,还可多次循环使用,“初始化”控制器按钮可以直接向处理器发送清除指令,快速清空抽签记录以及抽题记录,从而实现下一轮的抽签与抽题功能。

3)将“开始抽签”和“停止抽签”按钮集成为一个按钮,通过Me指令监测当前抽签控制器活动窗口是否激活,如果激活控制器显示为“停止抽签”按钮,否则控制器显示“开始抽签”按钮,相比于现有的“开始抽签”和“停止抽签”控制器按钮分别独立设计而言,减少了屏幕面积占用比例,提高屏幕美感。

4)可随时输出抽题活动状态,用户点击“开始抽题”控制器按钮时,系统状态输出显示器显示为“正在抽题”,点击“停止抽题”控制按钮之后,系统状态输出显示器显示为“请您回答×号题”。

5)用户可以随时查阅抽签或抽题记录,系统状态输出显示端每次都会将抽到的签号及题号反馈到“已抽签号”及“已抽题目”显示器。

6)本随机抽题系统采用PPT格式相比于传统的exe格式,具有占用空间小,无需用户安装,可在任何装有office的电脑上使用等优点,用户课根据自己实际情况修改PPT参数及幻灯片背景等,无需单独学习即可掌握相关使用技巧。

参考文献:

[1] 王琳.PPT轻松实现随机抽题[J].电脑爱好者,2012(17):68-68.

[2] 郜亚丽.巧用VBA编程实现PPT演示文稿的智能交互[J].办公自动化:综合版, 2010(10):46-48.

[3] 陈江.PPT2010编程实现随机抽题[J].电脑编程技巧与维护,2016(7):12-12.

[4] 吴安洪,胡维康.在PPT中巧用VBA进行考题的抽签[J].中学时代,2013(21):211-211.

[5] 朱建国.PPT新视角[M].北京:电子工业出版社,2013:189-241.

猜你喜欢
倒计时微信公众号
江苏生鲜产品微信公众号营销问题及对策研究
微信公众号在高校“Photoshop图像处理”课程中的应用