0

私は、学生がプロジェクトを完了している間、スライドに表示されるカウントダウン タイマーが必要なプロジェクトに取り組んでいます。

オンラインで複数の例を見つけましたが、それらを目的に適合させようとすると、コードを期待どおりに実行できません。

私のテストでは、コードにブレークポイントと debug.prints を追加して、コードが実行されているかどうかを確認して、論理エラーがあるかどうかを確認できるようにしました。ただし、スライドショーを再生すると、ブレークポイントにヒットしていないように見えますが、最初の更新行は実行されます -ActivePresentation.Slides(1).Shapes("MainTitle").TextFrame.TextRange.Text = "Got To " & Now

カウントダウンを適切に行う方法がわかりません。

ご意見、ご指導を賜りますようお願い申し上げます。

Public Sub BAR01_Countdown()

ActivePresentation.Slides(1).Shapes("MainTitle").TextFrame.TextRange.Text = "Got To " & Now

Dim CountTimeEnd As Date
Dim myHours As Integer
Dim myMinutes As Integer
Dim mySeconds As Integer
Dim dispH As Integer
Dim dispM As Integer
Dim dispS As Integer
Dim dispTime As String
Dim secondsRemain As Integer

    CountTimeEnd = Now()
    myHours = 0
    myMinutes = 5
    mySeconds = 0

    CountTimeEnd = DateAdd("h", myHours, CountTimeEnd)
    CountTimeEnd = DateAdd("n", myMinutes, CountTimeEnd)
    CountTimeEnd = DateAdd("s", mySeconds, CountTimeEnd)


    Do Until CountTimeEnd < Now()
        secondsRemain = (DateDiff("s", CountTimeEnd, Now))
        
        dispH = Round((secondsRemain) / (60 * 60), 0)
        dispM = Round(((secondsRemain) - (dispH * 60 * 60)) / 60, 0)
        dispS = (secondsRemain) - (dispH * 60 * 60) - (dispM * 60)
        
        If dispH > 0 Then
            dispTime = Format(dispH, "00") & " : " & Format(dispM, "00") & " . " & Format(dispS, "00")
        ElseIf dispH < 0 And dispM > 0 Then
            dispTime = Format(dispM, "00") & " . " & Format(dispS, "00")
        Else
            dispTime = Format(dispS, "00") & " seconds"
        End If
        
        ActivePresentation.Slides(1).Shapes("MainTitle").TextFrame.TextRange.Text = dispTime
        DoEvents
    Loop

End Sub

Sub OnSlideShowPageChange()
        BAR01_Countdown
End Sub
4

2 に答える 2