首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环切换阵列以更换播放器PowerPoint VBA

循环切换阵列以更换播放器PowerPoint VBA
EN

Stack Overflow用户
提问于 2021-10-27 04:45:21
回答 1查看 37关注 0票数 0

我正在尝试创建一个宏,以便在我在PowerPoint上制作的游戏中的三个玩家之间循环。然而,当我运行代码时,它只更改了一次,然后就卡住了。它不会在数组中循环。在代码中,我计划更改包含玩家姓名的形状的颜色,并在其他玩家的框上显示透明的灰色按钮,这样他们就不能调整自己的分数。这是我的代码。提前谢谢。

代码语言:javascript
复制
Sub SwitchPlayers()
   Dim oSl As Slide
   Dim RGB As String
   Dim i As Long
   Dim myTurn() As Integer
   ReDim myTurn(2)  '0, 1, 2... 3 compartments

      Set oSl = ActivePresentation.Slides(5)
    
    
    
      For i = 0 To 2
      myTurn(i) = i + 1
    
    
      If myTurn(i) = 0 Then
          oSl.Shapes("T1NB").Fill.ForeColor.RGB = vbYellow
          oSl.Shapes.Range(Array("T2NB", "T3NB")).Fill.ForeColor.RGB = vbWhite
          oSl.Shapes.Range(Array("T2+1G", "T2-1G", "T3+1G", "T3-1G")).Visible = True
          oSl.Shapes.Range(Array("T1+1G", "T1-1G")).Visible = False
      ElseIf myTurn(i) = 1 Then
          oSl.Shapes("T2NB").Fill.ForeColor.RGB = vbYellow
          oSl.Shapes.Range(Array("T1NB", "T3NB")).Fill.ForeColor.RGB = vbWhite
          oSl.Shapes.Range(Array("T1+1G", "T1-1G", "T3+1G", "T3-1G")).Visible = True
          oSl.Shapes.Range(Array("T2+1G", "T2-1G")).Visible = False
      ElseIf myTurn(i) = 2 Then
          oSl.Shapes("T3NB").Fill.ForeColor.RGB = vbYellow
          oSl.Shapes.Range(Array("T1NB", "T2NB")).Fill.ForeColor.RGB = vbWhite
          oSl.Shapes.Range(Array("T1+1G", "T1-1G", "T2+1G", "T2-1G")).Visible = True
          oSl.Shapes.Range(Array("T3+1G", "T3-1G")).Visible = False
      End If
        
      Next i
        
 End Sub
EN

回答 1

Stack Overflow用户

发布于 2021-10-28 02:14:33

再次感谢@SteveRindsberg。我解决了这个问题,并将Select Case添加到了我的工具箱中。这是我想出来的代码。效果很好。

代码语言:javascript
复制
Sub SwitchPlayers2()

Dim oSl As Slide
Dim RGB As String

    Set oSl = ActivePresentation.Slides(5)

       Select Case iLastRan
          Case Is = 0
                oSl.Shapes("T1NB").Fill.ForeColor.RGB = vbYellow
                oSl.Shapes.Range(Array("T2NB", "T3NB")).Fill.ForeColor.RGB = vbWhite
                oSl.Shapes.Range(Array("T2+1G", "T2-1G", "T3+1G", "T3-1G")).Visible = True
                oSl.Shapes.Range(Array("T1+1G", "T1-1G")).Visible = False
                iLastRan = iLastRan + 1
            Case Is = 1
                oSl.Shapes("T2NB").Fill.ForeColor.RGB = vbYellow
                oSl.Shapes.Range(Array("T1NB", "T3NB")).Fill.ForeColor.RGB = vbWhite
                oSl.Shapes.Range(Array("T1+1G", "T1-1G", "T3+1G", "T3-1G")).Visible = True
                oSl.Shapes.Range(Array("T2+1G", "T2-1G")).Visible = False
                iLastRan = iLastRan + 1
            Case Is = 2
                 oSl.Shapes("T3NB").Fill.ForeColor.RGB = vbYellow
                 oSl.Shapes.Range(Array("T1NB", "T2NB")).Fill.ForeColor.RGB = vbWhite
                 oSl.Shapes.Range(Array("T1+1G", "T1-1G", "T2+1G", "T2-1G")).Visible = True
                 oSl.Shapes.Range(Array("T3+1G", "T3-1G")).Visible = False
                 iLastRan = iLastRan + 1
                     If iLastRan > 2 Then
                         iLastRan = 0
                     End If
        End Select

    End Sub    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69732898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档