前一阵为了活动,做一个根据人员姓名,随机抽奖的ppt,用到了页面随机排序的宏,在这里浅浅记录一下。
原理很简单,就是利用切换里的自动换片和幻灯片放映里的循环放映,效果不算完美,只能说刚刚够用,按“S”键是暂停,画面刚好出现一个名字,其中随机播放效果就是利用随机宏,把幻灯片的页面随机排序,从而模拟随机抽奖,目前还达不到自动删除抽到的人名,这个以后解决了会更新。
以Office365为例。(WPS的操作可能会不同)
首先选择“文件/选项/自定义功能区”把开发工具加入到功能区
分别设置换片时间和循环放映
再打开“开发工具/Visual Basic”
选择“插入/模块”
把随机宏的代码粘贴进去
Sub ShuffleSlides() Dim slideCount As Long Dim i As Long Dim j As Long Dim temp As Long Dim slideIndices() As Long ' 获取幻灯片数量 slideCount = ActivePresentation.Slides.Count ' 创建一个数组存储幻灯片索引 ReDim slideIndices(1 To slideCount) ' 初始化数组 For i = 1 To slideCount slideIndices(i) = i Next i ' 使用 Fisher-Yates 洗牌算法打乱数组 For i = slideCount To 2 Step -1 j = Int((i - 1 + 1) \* Rnd + 1) temp = slideIndices(i) slideIndices(i) = slideIndices(j) slideIndices(j) = temp Next i ' 按照打乱的顺序重新排列幻灯片 For i = 1 To slideCount ActivePresentation.Slides(slideIndices(i)).MoveTo toPos := i Next i End Sub
关闭Visual Basic,最后打开宏窗口
选择ShuffleSlides随机排列宏,点击运行即可