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

1

我有 PowerPoint 2010,根据帮助文件,DateAdd分钟的参数应该是“n”,而不是“m”,所以

CountTimeEnd = DateAdd("n", myMinutes, CountTimeEnd)

应该管用。我对您的循环进行了一些修改,这应该可以解决问题:

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", Now, CountTimeEnd))
    
    dispH = Int(secondsRemain / (60 * 60))
    dispM = Int(secondsRemain / 60) Mod 60
    dispS = secondsRemain Mod 60
    
    If dispH > 0 Then
        dispTime = Format(dispH, "00") & " : " & Format(dispM, "00") & " . " & Format(dispS, "00")
    ElseIf 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
于 2021-12-08T01:42:40.943 回答
0

好消息是它可以在没有任何代码行的情况下完成。但是,它需要的不仅仅是点击完成(保证工作)。

1.导航到演示文稿的第一张幻灯片。

2.单击功能区的“插入”选项卡,然后单击“视频”>“我的电脑上的视频”(或其他 PPT 版本中的“文件中的视频”)。

3.嗯,这是最重要的一步。您必须选择一个显示您想要的倒计时的视频。但是从哪里得到这个视频呢?没问题,从YouTube!如果你想倒计时 5 分钟,只需输入 YT countdown 5 min,你就会得到一堆有用的视频。如果你的倒计时是 41 分钟,同样的技术也适用。接下来,您将下载视频,为此只需在视频 URL 中的youtube.comss之前添加。您将被重定向到savefrom.net,您可以在其中直接下载您的视频。将视频存储在您的 PC 中后,选择它以将其插入到您的演示文稿中(您可能需要重复第 2 步)。

4.现在,您的视频出现在第一张幻灯片中。不要忘记您可以随时调整视频倒计时的大小和位置;例如,您可以调整它的大小并将其拖动到右上角。

5.接下来,选择您的视频,单击功能区上的播放选项卡(视频工具播放)。单击开始下拉列表,选择自动。事实上,您将视频倒计时设置为自动播放。

6.单击功能区的动画选项卡,然后单击动画窗格按钮。

7.在显示的动画窗格中(在右侧),双击第一个动画;这将打开播放视频对话框。

8.在播放视频对话框中,选择效果选项卡。在“停止播放”部分,单击“之后”单选按钮并将值设置为999 - 最大值(您的演示文稿不会超过 999 张幻灯片,我很确定 :p)。最后点击确定。

就是这样!恭喜,你终于完成了。现在您可以做的是单击幻灯片放映,您会看到倒数计时器显示随着您从一张幻灯片进行到另一张幻灯片的时间减少。

于 2021-12-07T22:27:45.800 回答