想让12个人随机分为2人一小组,并以动画形式呈现出来,PPT做得到吗?

关注者
6
被浏览
6,550
登录后你可以
不限量看优质回答 私信答主深度交流 精彩内容一键收藏

假设用VBA作

如果是高版本的PPT,有平滑切换功能,可以将PPT复制一页,在第2页设置分组后的位置,对第二页的图形的横纵坐标随机排序

在PPT第1页幻灯片里插入12个矩形,作为要分组的人

点击【开始】->【选择】->【选择窗格】,在右侧可以设置图形的名称,将其设为P1-P12,便于VBA循环

插入6个无填充矩形,作为分组框

插入一个矩形,作为切换幻灯片的按钮

复制第1页幻灯片,在第2页幻灯片里将12个图形移到分组框里

在【切换】里设置两个幻灯片的切换方式为【平滑】

在【插入】->【动作】里将第1张幻灯片右上角的按钮插入动作【切换到下一张幻灯片】

在【插入】->【动作】里将第2张幻灯片右上角的按钮插入动作【切换到上一张幻灯片】

在VBA编辑器里新建一个模块,粘贴下边的代码:

Sub OnSlideShowPageChange() '幻灯片切换时运行
Dim pptPre As Presentation
Dim arr(1 To 12) As Double
Dim temp_rnd As Double
Dim temp_left As Double
Dim temp_top As Double
Set pptPre = ActivePresentation
If pptPre.SlideShowWindow.View.CurrentShowPosition = 1 Then '当前页为第1页时运行
    Randomize '重置随机种子
    For i = 1 To 12 '写入
        arr(i) = Rnd
    Next i
    For i1 = 1 To 11 '根据随机数的大小对图形的横纵坐标冒泡排序,重新分配
        For i2 = 2 To 12
            If arr(i1) > arr(i2) Then
                temp_rnd = arr(i1)
                arr(i1) = arr(i2)
                arr(i2) = temp_rnd
                With pptPre.Slides(2)
                    temp_left = .Shapes("P" & i1).Left
                    .Shapes("P" & i1).Left = .Shapes("P" & i2).Left
                    .Shapes("P" & i2).Left = temp_left
                    temp_top = .Shapes("P" & i1).Top
                    .Shapes("P" & i1).Top = .Shapes("P" & i2).Top
                    .Shapes("P" & i2).Top = temp_top
                End With