需结合九宫格布局、触发器、路径动画与VBA实现抽奖效果:先构建命名统一的3×3矩形阵列,添加启动按钮和状态框;配置循环高亮动画并绑定触发器;再通过VBA生成随机数锁定中奖格、更新提示文本,并终止动画。

如果您希望在PPT中实现一个可点击触发、自动高亮并随机停驻于九宫格某一格的抽奖动画,需结合形状排列、触发器设置、路径动画与VBA交互逻辑。以下是实现此效果的具体步骤:
成品ppt在线生成,百种模板可供选择☜☜☜☜☜点击使用;
一、构建九宫格布局并统一命名
九宫格需由9个等尺寸矩形组成3×3阵列,确保每格具备唯一且易识别的名称,便于后续动画绑定与VBA调用。所有形状应置于同一图层,避免被其他对象遮挡。
1、在幻灯片空白区域按住Shift键绘制9个正方形,尺寸设为8厘米×8厘米,横向间距1厘米,纵向间距1厘米。
2、从左至右、从上至下依次选中每个正方形,在“格式”选项卡的“排列”组中点击“选择窗格”,双击其默认名称(如“矩形 3”),分别重命名为:Cell_1、Cell_2、Cell_3、Cell_4、Cell_5、Cell_6、Cell_7、Cell_8、Cell_9。
3、为所有9个形状统一设置填充色为浅灰色(RGB 240,240,240),边框设为1.5磅深灰色,确保视觉一致性。
二、添加启动按钮与状态提示框
启动按钮用于触发抽奖流程,状态提示框用于显示“抽奖中…”和最终结果,二者均需设置为非动画初始态,仅响应触发器变化。
1、插入一个圆角矩形,文本设为“开始抽奖”,字体加粗,字号28,填充色设为#4472C4,文字颜色为白色。
2、右键该按钮→“设置形状格式”→“大小与属性”→勾选“锁定纵横比”并取消“不随文本框缩放”,确保点击区域稳定。
3、插入一个文本框,输入“等待点击”,置于九宫格正上方居中位置,字号24,颜色设为#5B5B5B;将其命名为StatusText(在选择窗格中重命名)。
三、配置九宫格高亮循环动画
通过“强调”类动画配合“重复”与“自动翻转”属性,使九宫格各单元格按顺序快速切换高亮状态,模拟随机滚动视觉效果。该动画需隐藏起始帧,仅响应按钮点击启动。
1、全选9个Cell形状(按Ctrl逐个点击),在“动画”选项卡中选择“更多强调效果”→“颜色加深”(或自定义“填充颜色”动画)。
2、在“动画窗格”中右键该动画→“效果选项”,将“动画文本”设为“按字母”,“延迟”设为0.05秒,“重复”设为“直到下一次单击”。
3、再次右键该动画→“计时”,将“开始”设为“与上一动画同时”,“期间”设为0.1秒,“重复”设为“直到下一次单击”,并勾选“自动翻转”。
4、在“动画窗格”中将该动画拖至最顶层,并右键→“触发器”→“单击”→选择“开始抽奖”按钮。
四、嵌入VBA代码实现真随机锁定
VBA用于监听按钮点击事件,在动画运行若干周期后强制停止,并从1–9中生成一个真正随机整数,将对应Cell设为高亮色,同时更新状态提示框内容。该脚本必须绑定至当前幻灯片。
1、按Alt+F11打开VBA编辑器,双击左侧“VBAProject (演示文稿1)”下的“ThisPresentation”,粘贴以下代码:
Private Sub OnSlideShowPageChange(ByVal SldIndex As Long)
If SldIndex = 1 Then
ActivePresentation.Slides(1).Shapes("StatusText").TextFrame.TextRange.Text = "等待点击"
End If
End Sub
Sub StartLottery()
Dim i As Integer, rndCell As Integer
Randomize
rndCell = Int((9 - 1 + 1) * Rnd + 1)
For i = 1 To 9
With ActivePresentation.Slides(1).Shapes("Cell_" & i)
.Fill.ForeColor.RGB = RGB(240, 240, 240)
End With
Next i
With ActivePresentation.Slides(1).Shapes("Cell_" & rndCell)
.Fill.ForeColor.RGB = RGB(255, 215, 0)
End With
ActivePresentation.Slides(1).Shapes("StatusText").TextFrame.TextRange.Text = "中奖格:" & rndCell
End Sub
2、返回PPT,在“开发工具”选项卡中点击“宏”,选择“StartLottery”,点击“选项”,设置快捷键Ctrl+Shift+L(可选),再点击“确定”。
3、右键“开始抽奖”按钮→“动作设置”→“运行宏”→选择“StartLottery”。确保“幻灯片放映”模式下按钮可执行该宏。
五、设置动画终止与结果固化逻辑
为防止动画持续运行掩盖结果,需在VBA执行末尾主动禁用循环动画,并确保高亮状态不被后续操作覆盖。该步骤依赖动画编号控制与形状属性直写。
1、在VBA编辑器中,修改StartLottery子过程,在末尾添加:
ActivePresentation.Slides(1).TimeLine.MainSequence(1).Delete
2、确认动画窗格中循环动画确为序列第1项(若存在其他动画,需调整索引号);若不确定,改用名称删除:
On Error Resume Next
ActivePresentation.Slides(1).TimeLine.MainSequence.Item("CycleHighlight").Delete
On Error GoTo 0
3、为每个Cell形状单独设置“进入”动画(如“淡入”),触发器设为“与上一动画同时”,但“开始”设为“之后”,延迟0秒,并在VBA中通过.ShapeAnimations(i).Stop方法终止——此操作需在PowerPoint 2019及以上版本启用。










