簡體   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