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
)
--> 在此期间,现在会增加。
再次检查if now > EndTick
:如果是,则退出循环。
所以变色的部分很可能没有命中
尝试改变逻辑,使 If
只被命中一次(代码未经测试)
Do
DoEvents
Loop Until Now() >= EndTick
With myDocument.Shapes("Arrow3rd1").Fill
.ForeColor.RGB = RGB(255, 0, 0)
End With
此代码用于执行时序,并取决于以正确间隔开始的每个段,该间隔由基于用户输入的变量设置。通过停止并逐步执行代码,它可以正常工作而没有错误。当不间断地执行时,命令按钮“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
)
--> 在此期间,现在会增加。
再次检查if now > EndTick
:如果是,则退出循环。
所以变色的部分很可能没有命中
尝试改变逻辑,使 If
只被命中一次(代码未经测试)
Do
DoEvents
Loop Until Now() >= EndTick
With myDocument.Shapes("Arrow3rd1").Fill
.ForeColor.RGB = RGB(255, 0, 0)
End With