繁体   English   中英

VBA 在 PowerPoint 中仅使用停止和 F8 步进通过它,当它自己运行时,它会更改形状 1 的填充颜色,但不会更改形状 2

[英]VBA in PowerPoint only working with a stop and F8 stepping through it, When running by itself it changes fill color for shape 1 but not shape 2

此代码用于执行时序,并取决于每个段以正确的间隔开始,该间隔由基于用户输入的变量设置。 插入停止并逐步执行代码后,它可以正常工作,没有错误。 当不停止执行时,命令按钮“RunCommand”保持按下状态 5 秒,形状 1 的前景色发生变化,但形状 2 不变。 为了方便起见,我已经将代码向下推敲,因为这似乎是给我问题的部分。 我被卡住了,如果我只是运行代码它不起作用,如果我单步执行代码它工作正常??????

Private Sub RunCommand_Click()

Dim EndTick As Date

EndTick = DateAdd("s", 5, Now())
    
Set myDocument = ActivePresentation.Slides(1)

    With myDocument.Shapes("Arrow3rd2").Fill
        .ForeColor.RGB = RGB(255, 0, 0)
    End With
    
    Do
        If Now() > EndTick Then
            With myDocument.Shapes("Arrow3rd1").Fill
                .ForeColor.RGB = RGB(255, 0, 0)
            End With
        Else
            DoEvents
        End If
    Loop Until Now() >= EndTick
    
End Sub

Application.now的值很可能在DoEvents期间发生变化。 所以你的程序流程是

检查是否now > EndTick :如果是,则更改形状的颜色。
如果不是这种情况,请花时间做其他事情( DoEvents
--> 在这期间,now会增加。
再次检查if now > EndTick :如果是,则离开循环。

所以颜色改变的部分很可能没有命中。

尝试更改逻辑,使If只被命中一次(代码未经测试)

Do
    DoEvents
Loop Until Now() >= EndTick
With myDocument.Shapes("Arrow3rd1").Fill
    .ForeColor.RGB = RGB(255, 0, 0)
End With

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM