一、需求概述

最近在做个培训,想搞个课堂互动,准备好题库,然后在PPT实现模拟“滚动数字”随机选择题,并自动跳转到指定数字的题目页,页面显示答题倒计时,手动跳转到答案页。再次选择题目时,在剩余未选的题目中重新随机选题。最终效果如下:

二、实现思路

寒暄下,以前一直在word/excel进行vba开发,没有涉及ppt,百度搜索后发现原来ppt也可以vba开发,感觉新鲜的很O(∩_∩)O

1、将题目和答案分别按顺序都做成ppt幻灯片,然后通过“题目开始页码+随机数字=题目页码,答案开始页码+题目号=答案页码”来定位页面。

2、通过for循环语句+随机数来模拟滚动随机的数字效果。

Do While i < 50 '用来生成模拟数字滚动的动画
    
    n = Int((x * Rnd) + 1) '用来生成总题目数随机数
    Randomize
    n = Int((x * Rnd) + 1) '用来再次生成总题目数随机数
    TextBox5.Value = n
    i = i + 1
    Savetime = timeGetTime
    While timeGetTime < Savetime + 35
        DoEvents
    Wend
Loop

3、由于ppt不太方便存储数据,也容易操作。因此想到通过另做一个excel文件来保存题目的题目数及选中状态,这样可以实现每次随机选的题目都是剩余没有答过的。而且每次开始前,可以重新更新题目状态(如YES是选中过的,NO是未选)。如

4、在题目页实现倒计时功能,可以手动开始和结束。经查可以通过 "winmm.dll"的timeGetTime函数来实现倒计时。效果如下:

三、代码实现

1、开始随机选题的代码

Private Sub button1_Click()Dim m As Integer '用来生成随机题数
Dim n As Integer '用来生成随机题数,模拟数字滚动效果
Dim r As Integer '行数
Dim s As Integer '判断是否已答的行数
Dim p As Integer 'PPT中题目开始的页码
Dim x As Integer '设置总题目数
Dim y As Integer '未答的总数,用来生产随机数
Dim v As String '存储题目回答状态
Dim Savetime As Double
Dim MyexcelApp As New Excel.Application
Dim MyexcelBook As New Excel.Workbook
Dim MyexcelSheet As New Excel.Worksheetsheetname = Label2.Caption 'sheet标签页名称
Pathstr = Application.ActivePresentation.Path + "\timu.xlsx" '获取文件路径,与当前文件同目录
Set MyexcelBook = MyexcelApp.Workbooks.Open(Pathstr)
Set MyexcelSheet = MyexcelBook.Worksheets(sheetname)
MyexcelSheet.Activatex = MyexcelSheet.Range("B1").Value '读取EXCEL文件总题数
y = MyexcelSheet.Range("B2").Value '读取EXCEL文件未答的总题数
p = MyexcelSheet.Range("B3").Value '读取EXCEL文件PPT题目开始页码i = 1
Do While i < 50 '用来生成模拟数字滚动的动画'    If j = 48 Then
'        TextBox1.Value = "结束"
'        Exit Do
'    Elsen = Int((x * Rnd) + 1) '用来生成总题目数随机数Randomizen = Int((x * Rnd) + 1) '用来再次生成总题目数随机数TextBox5.Value = n
'    End Ifi = i + 1Savetime = timeGetTimeWhile timeGetTime < Savetime + 35DoEventsWend
LoopIf y > 0 Thenm = Int((y * Rnd) + 1) '用来生成未答题数的随机数据Randomizem = Int((y * Rnd) + 1) '用来再次生成未答题数的随机数据j = 5 'excel中题号开始的行号r = 0s = 0Do While j <= x + 4v = MyexcelSheet.Range("B" & j).ValueIf v = "NO" Thens = s + 1End IfIf s = m Thenr = MyexcelSheet.Range("A" & j).ValueMyexcelSheet.Range("B" & j).Value = "YES"TextBox5.Value = rExit DoEnd Ifj = j + 1Loopg = r + p - 1MyexcelBook.SaveMyexcelBook.CloseSet MyexcelApp = NothingSet MyexcelBook = NothingSet MyexceSheet = NothingWhile timeGetTime < Savetime + 2500DoEventsWendWith SlideShowWindows(1).View.GotoSlide gEnd With
ElseTextBox5.Value = "无"
End IfEnd Sub

2、实现倒计时

Private Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long '64位系统,需要增加PtrSafe标识Public Ctr As Boolean
Const n As Integer = 180 '定义倒计时总秒数Private Sub CommandButton1_Click()If Ctr = True ThenCtr = FalseCommandButton1.Caption = "停止"CommandButton1.ForeColor = RGB(255, 0, 0)For i = 0 To n '用来生成倒计时If Ctr = True ThenLabel1.Caption = "结束"Label1.ForeColor = RGB(255, 0, 0)Exit ForElseIf i = n ThenLabel1.Caption = "结束"Label1.ForeColor = RGB(255, 0, 0)Exit ForElseLabel1.Caption = n - i & "S"Label1.ForeColor = RGB(255, 255, 255)Savetime = timeGetTimeWhile timeGetTime < Savetime + 1000DoEventsWendEnd IfEnd IfNextElseLabel1.Caption = "结束"Label1.ForeColor = RGB(255, 0, 0)CommandButton1.Caption = "开始"CommandButton1.ForeColor = RGB(255, 255, 255)Ctr = True
End IfEnd Sub

3、读取excel文件的题目数和题目状态

Private Sub readdata()Dim MyexcelApp As New Excel.ApplicationDim MyexcelBook As New Excel.WorkbookDim MyexcelSheet As New Excel.Worksheet'    Pathstr = "C:\Users\lenovo\Desktop\text1.xlsx"sheetname = Label2.Caption 'sheet标签页名称Pathstr = Application.ActivePresentation.Path + "\timu.xlsx" '获取文件路径,与当前文件同目录Set MyexcelBook = MyexcelApp.Workbooks.Open(Pathstr)Set MyexcelSheet = MyexcelBook.Worksheets(sheetname)MyexcelSheet.Activatex = MyexcelSheet.Range("B1").Value '读取EXCEL文件总题数y = MyexcelSheet.Range("B2").Value '读取EXCEL文件未答的总题数Label3.Caption = xLabel1.Caption = yMyexcelBook.CloseSet MyexcelApp = NothingSet MyexcelBook = NothingSet MyexceSheet = NothingEnd Sub

四、总结

其实ppt的vba开发跟excel/word没啥区别,本人也是第一次尝试,日常工作中还是用的比较少。以下是我实际用的ppt文件,保存题目状态的excel文件是默认与ppt同目录一起(自己可以手动修改文件位置),列改成NO则表示没有选中的。

https://download.csdn.net/download/shaochuan_2008/85463291https://download.csdn.net/download/shaochuan_2008/85463291

ppt滚动动画随机选题相关推荐

  1. android仿ppt,android 仿ppt进入动画效果合集

    EnterAnimation android 仿ppt进入动画效果合集, 百叶窗效果,擦除效果,盒状效果,阶梯效果,菱形效果,轮子效果,劈裂效果,棋盘效果, 切入效果,扇形展开效果,十字扩展效果,随机 ...

  2. 怎样实现随机抽题php,ppt VBA 实现随机抽题

    目标/最终效果 目标具体描述:制作一个ppt,实现随机抽题. 第一页幻灯片中:点击开始按钮后,右边的文本框快速滚动显示随机数字,点击停止按钮后,滚动停止,抽取到的题号会显示到第二个文本框中,并appe ...

  3. js WOW.js滚动动画,跟随滚动条位置执行动画

    原生js实现教程: 元素出现在页面时,添加动画,配合animate.css使用_hjhfreshman的博客-CSDN博客_给元素添加动画 效果图: 如上所示,每滚动到一个区域,执行动画如:淡入,浮入 ...

  4. android 仿ppt进入动画效果合集

    EnterAnimation android 仿ppt进入动画效果合集, 百叶窗效果,擦除效果,盒状效果,阶梯效果,菱形效果,轮子效果,劈裂效果,棋盘效果, 切入效果,扇形展开效果,十字扩展效果,随机 ...

  5. ppt 简单动画制作

    ppt 简单动画制作

  6. qt同时两个动画执行_Qt实现数字滚动动画效果

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html Qt实现数字滚动动画效果 3. ...

  7. ppt倒计时_曾因PPT倒计时动画困扰?这样做就利索了。

    在大会开场.抽奖.揭示等环节, 我们可能需要用到PPT倒计时动画. 倒计时的样式可以有无穷多种. ‍ 但它们的制作原理都是类似的, 并且这类动画是一次制作永久有效. 本期就来讲解一种干净利落的设计流程 ...

  8. 神奇的滚动动画,30个视差滚动网站设计

    使用 HTML5 和 CSS3,我们能够在浏览器中创建更有趣和更吸引眼球的效果.其中,视差滚动(Parallax Scrolling)就是这样的效果之一.这种技术通过在网页向下滚动的时候,控制背景的移 ...

  9. 原生JS基于window.scrollTo()封装垂直滚动动画工具函数

    概要: 原生JS基于window.scrollTo()封装垂直滚动动画工具函数,可应用与锚点定位.回到顶部等操作. ####封装原因: 在vue项目中,遇到需要实现垂直滚动效果的需求,初步想到的方法有 ...

  10. html如何设置滚动动画,JavaScript 实现页面滚动动画

    在做前端 UI 效果时,让元素根据滚动位置实现动画效果是一个非常流行的设计,通常我们会使用第三方插件或库来实现.在本教程中,我将教大家使用纯 JavaScript 和 CSS 来实现. 先预览一下实现 ...

最新文章

  1. 项目管理生命周期各个阶段的文档
  2. [转]C#开发ActiveX控件,.NET开发OCX控件案例
  3. centos 6.5安装mysql5.7,centos6.5安装mysql5.7
  4. html代码范例_最佳HTML范例和HTML5范例
  5. 今天又遇到了一个问题
  6. python电脑配置-Python--获取电脑配置信息--设计代码
  7. 四级网络工程师和四级信息安全工程师考试须知与学习方法
  8. 2022年北京航空航天大学计算机考研复试分数线
  9. [Python]更改图片底色
  10. Android程序反破解技术
  11. Linux入门怎么学?262页linux学习笔记,零基础也能轻松入门
  12. MySQL 内连接、外连接、全连接
  13. 图片搜索引擎 - WebCrawler
  14. 2022年半导体硅片行业研究报告
  15. 免费的天气查询 API 接口分享
  16. 《三国演义》醉酒误事Top10
  17. 伪原创视频模糊 视频md5值查询
  18. 豆瓣电影Top250——电影详细
  19. 如何自定义sonar插件并学会使用
  20. 智慧住建信息平台项目工程建设方案

热门文章

  1. 修改html倒计时,利用自定义HTML小工具实现倒计时
  2. 什么是数据可视化大屏?如何制作一个数据可视化大屏?
  3. 原型工具 axure 使用
  4. Windows服务器基本安全策略配置
  5. Android开发之连接夜神模拟器
  6. 执行python manage.py celery -A HttpRunnerManager worker --loglevel=info 报错问题集锦
  7. Linux的du命令
  8. 软件测试面试,面试官最后问:你有什么要问我的吗?应该如何回答
  9. win10下移动pagefiles.sys文件到D盘
  10. 微积分-指数函数求导