单位举行知识竞赛,参赛队做必答题时,在备选题目中随机抽取题目做答,这样才公平,可是如何实现随机抽取和题目实时显示呢? 为了做到公平公正,趣味性更强,我在PPT中制作好抽题界面,再使用简单的宏,实现了随机抽取和题目实时显示。 设计抽题界面 打开PPT2010,将演示文稿保存成启用宏的PPT演示文稿格式(即.pptm格式,包含宏代码的演示文稿,必须保存成这种格式),在第一张幻灯片中设计抽题界面,先插入三个文本框,写上必要的文字,再通过“开发工具”选项卡,插入三个命令按钮控件,在这些控件上右击,选择“属性”命令,打开它们的“属性”对话框,在“名称”后将命令按钮名称分别修改为:开始、停止和打开抽取的题目,再在Caption后填写按钮上显示的名称(可随意大写,我这儿设置的与按钮名称相同),并对字体、字号、背景颜色、样式等进行设置。 再插入三个文本框控件,同样在“属性”对话框中,修改它们的名称为:抽取框、结果框和已抽题目。把“抽取框”放到“开始”和“停止”命令按钮控件之间,把“结果框”放到“您抽取的是 号题”文本中,将“已抽题目”拖至适合大小,放置到下面(图1)。 接着新建一张幻灯片,设计好被抽题目放置界面,并在其上设计一个返回到抽题界面幻灯片的链接。将该幻灯片复制多份,将相应题目录入相应各幻灯片上,第二张幻灯片放第一道题目,第三张幻灯片放第二道题目,依次类推。 编写宏代码 接下来,按ALT+F11组合键,打开VBA宏编辑窗口,双击左侧的“Slide1”,将以下代码复制到右窗格中并保存。 Private Sub 开始_Click() 停止.Enabled = True '停止按钮当前有效 Dim a As Integer Randomize Do a = Fix(Rnd * 10 + 1) '使用随机函数 抽取框.Text = a 结果框.Text = "" DoEvents Loop End Sub Private Sub 停止_Click() 结果框.Text = 抽取框.Text 已抽题目 = 已抽题目 + 抽取框 + " # " '题目标记用#分隔 停止.Enabled = False End End Sub Private Sub 打开抽取的题目_Click() ActivePresentation.SlideShowWindow_ .View.GotoSlide Val(抽取框.Text + 1) End Sub 随机抽取题目并打开 到抽取题目时,放映幻灯片,点击第一张的“开始”按钮,此时其后的文本框中就随机快速滚动显示1到10这十个数字,点击“停止”按钮后,数字停止滚动,并显示出抽取的题号,同时在上方给出“您抽取的是X号题”提示,在下方“已抽题目”中显示出所有抽过的题目标号。点击下方的“打开抽取的题目”按钮,切换到抽取题目幻灯片,选手做完题目后,点击返回链接,回到抽取题目页面,继续为下一个选手抽题(图2)。 小提示:在幻灯片放映状态下,可以选中三个文本框控件中的文本,删除它们,达到清零的目的。 代码图示 宏代码 |