ppt VBA 实现随机抽题

目录

  • 目标/最终效果
  • 关于VBA
  • VBA简单示例
    • 检查环境
    • 步骤
  • VBA实现随机抽题
  • todo challenge

目标/最终效果

目标是制作一个ppt,实现随机抽题,具体描述:

  • 第一页幻灯片中:点击开始按钮后,右边的文本框快速滚动 显示随机数字;点击停止按钮后,滚动停止,抽取到的题号会显示到第二个文本框中,并append到第三个文本框的内容中;然后点击跳转按钮,会跳转至相应题目的幻灯片。
  • 跳转题目幻灯片后,点击返回键,可返回到第一页幻灯片继续抽题。
  • 第一页幻灯片中,重置按钮将清除所有文本框的内容。

ppt VBA 实现随机抽题_第1张图片

ppt VBA 实现随机抽题_第2张图片

ppt VBA 实现随机抽题_第3张图片

PS:本文适合具有一定编程基础的读者。

最终效果链接:https://pan.baidu.com/s/1C9gmVtLDvTbOOYabEqVlng 提取码:hxt7

注意应将文件保存为.pptm(启用宏)形式。

关于VBA

  • VBA,即Visual Basic for Application,是一种程序设计语言,集成在某个具体应用软件中(比如最常用的是Excel VBA,我们将Excel称为宿主应用程序)。
  • VBA与VB(Visual Basic):在开发环境、基本语法、支持的对象和属性和方法等都十分相似。不同之处在于,VBA代码需要宿主应用程序的支持,因此只能与宿主应用程序一起使用,不能使用VBA创建独立运行的应用程序。
  • VBA与宏:一组VBA指令的集合形成了宏,宏能够自动执行宿主应用程序的功能,实现一次性完成多项操作,或,扩展现有功能。
  • ppt VBA:= VBA的基础语法 + ppt对象模型。对于本文目标任务的实现来说,可以不掌握ppt对象模型。不过这里仍然给出完整的学习框架,供有兴趣的读者拓展:

【拓展】以Excel VBA为例说明VBA的学习框架:

  • VBA:作为一门程序设计语言,具有基本语法(数据类型、运算符、程序结构等)
  • 由于VBA集成在宿主应用程序中,通过操作宿主应用程序的对象模型完成具体的任务,因此,Excel VBA编程核心是 Excel对象模型。
  • Excel对象模型:需要了解Excel对象模型的层次结构,熟悉每个对象在该层次结构中的位置,及在程序中的引用方式,理解对象的属性方法,从而实现对excel的操作。官方文档在这里。
  • ppt VBA 实现随机抽题_第4张图片

VBA简单示例

首先介绍命令按钮控件的简单示例,通过本部分,读者应掌握:

  • 如何创建控件、设置属性。
  • 熟悉VBA编辑器。
  • 一个控件对某个动作的响应函数的编写。
  • 运行。

检查环境

  • 版本:office 最新版 PowerPoint (其它版本或者WPS或许也行)
  • 开发工具:看看顶部有没有“开发工具”菜单。没有的话,在“文件”——“选项”——“自定义功能区”——勾选“开发工具”

ppt VBA 实现随机抽题_第5张图片

  • VBA编辑器:检查能否正常调出VBA编辑器

    • 法一:快捷键alt + F11
    • 法二:“开发工具”——“宏”——随便输入一个宏名,点击创建。
    • 看能否正常调出如下的VBA编辑器。若不能调出,弹窗提示错误(内存溢出啥的),很可能是你之前安装过WPS,请参考这篇博客修改注册表。

ppt VBA 实现随机抽题_第6张图片

步骤

  • 创建控件:“开发工具”——选择“命令按钮控件”——在幻灯片上画出控件。 (还有很多其它类型的控件,请自行探索)

ppt VBA 实现随机抽题_第7张图片

  • 编辑控件属性:右键点击画出来的丑陋控件——“属性表”。

    • “(名称)”属性:这个控件的名字,编程时用到,建议用英文认真命名,这里使用hello_btn。
    • “Caption”属性:命令按钮控件显示的文字。
    • 另,调整样式时,建议选择“按分类序”,请自行探索如何改变控件的字体大小、前景背景颜色、对齐方式等。
  • 编写控件响应函数:双击控件,或,右键——“查看代码”,从而调出VBA编辑器(也可直接按快捷键 alt+F11)。

    1. 双击选择所在幻灯片,这里是slide8
    2. 选择控件名称,这里是hello_btn
    3. 选择控件响应的事件,这里是单击事件click
    4. 然后会自动生成函数头尾,我们需要在中间补充函数的内容

    ppt VBA 实现随机抽题_第8张图片

      Private Sub hello_btn_Click()
          '单引号表示注释,与C语言的//含义相同
          Dim str As String 'Dim 变量名 As 数据类型,能声明一个变量,常用数据类型为Integer和String
          str = "hello world"
          MsgBox str 'MsgBox是消息框函数,这里实现了将弹出消息框并显示"hello world"的功能
      End Sub
    • 变量声明等VBA基础语法,参见这里
    • 对象模型及MsgBox等函数,参见官方文档。另,光标定位某个函数后,按下F1,会在浏览器打开相应的官方文档.
  • 运行方法:放映幻灯片,点击按钮,就会弹窗显示"hello world"。或者,在VBA编辑器中,直接按F5运行。

VBA实现随机抽题

  • 创建4个命令按钮控件,命名为start_btn, stop_btn, jump_btn, reset_btn。创建3个文本框控件,命名为rolling_num_text, result_num_text, done_nums_text。编辑控件属性,加入一些提示性文本框。
  • 创建具体题目的幻灯片,注意添加返回到首页的按钮(插入某个形状,然后右键设置超链接)。复制得到7个这样的幻灯片,表示有7道题。
  • VBA中编写4个函数:start_btn_Click、stop_btn_Click、jump_btn_Click、reset_btn_Click:
'全局变量
Dim n As Integer, stop_flag As Boolean

Private Sub start_btn_Click()
    stop_flag = False
    n = 7 '初始化,觉得还是放在一个init初始化函数里比较好...
    stop_btn.Enabled = True '使stop按钮有效
    Dim a As Integer
    Randomize '初始化Rnd函数的随机数字生成器, 为其提供一个新的种子值。可按F1键查看函数解析。
    Do
        a = Fix(Rnd * n + 1) 'a是[1,n]的随机整数。Fix函数返回数字的整数部分;Rnd函数没有参数,返回[0,1)的小数。
        rolling_num_text.Text = a
        result_num_text.Text = ""
        DoEvents  '交出控制权,以便操作系统能够处理其它事情
        If stop_flag = True Then
            Exit Do '退出循环,相当于break
        End If
    Loop
End Sub

Private Sub stop_btn_Click()
    result_num_text.Text = rolling_num_text.Text
    done_nums_text = done_nums_text + result_num_text + "  "
    stop_btn.Enabled = False '使stop按钮无效
    stop_flag = True
End Sub

Private Sub jump_btn_Click()
    Dim temp As Integer
    temp = result_num_text.Text + 1
    ActivePresentation.SlideShowWindow.View.GotoSlide Val(temp)'GotoSlide切换到指定的幻灯片
End Sub

Private Sub reset_btn_Click()
    rolling_num_text.Text = ""
    result_num_text.Text = ""
    done_nums_text.Text = ""
End Sub

todo challenge

  • 抽题时,自动过滤已经抽过的题目。
    • 需要使用数组(清空、插入、索引等操作)
  • 抽题时,还能选择题目的类型,比如从3类中选择1类。
    • 法一:使用选择按钮控件
    • 法二:添加文本框,可输入题目类别号。
  • 链接excel与ppt,实现“只需编辑excel相关数据,即快速创建ppt相应的题目幻灯片”。题库excel中,题目类型、每类型的题目数量、题目内容字符串,都只需在excel中改动。
    • 需要熟知excel和ppt的对象模型,然后学习如何链接excel与ppt

参考链接:

随机抽题、链接excel与ppt、VBA基础语法、MS官方文档是个宝

快捷键小结:

alt+F11打开VBA编辑器、F5运行、F1在浏览器打开 光标定位处 的帮助文档

转载于:https://www.cnblogs.com/jeffan/p/11583278.html

你可能感兴趣的:(ppt VBA 实现随机抽题)