PowerPoint - 创建倒数计时器 - VBA
Posted
技术标签:
【中文标题】PowerPoint - 创建倒数计时器 - VBA【英文标题】:PowerPoint - Create Countdown Timer - VBA 【发布时间】:2022-01-12 22:38:27 【问题描述】:我正在开展一个项目,我们希望在学生完成项目时在幻灯片上显示倒数计时器。
我在网上找到了多个示例,但是在尝试根据我们的目的调整它们时,我无法让代码按预期运行。
在我的测试中,我在代码和 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
【问题讨论】:
您可以尝试使用此处提供的代码并相应地更改格式吗? pptvba.com/countdown 【参考方案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
【讨论】:
感谢您的收获。但是还是不行 @psycoperl 是的,我现在实际测试了您的代码并进行了编辑,看看是否有帮助。 @rodolfoRiberio - 谢谢!这似乎行得通! @psycoperl 很高兴我能帮上忙。不要忘记标记为已接受 =)【参考方案2】:好吧,好消息是它可以在没有任何代码行的情况下完成。 但是,它需要的不仅仅是单击即可完成(保证工作)。
1.导航到演示文稿的第一张幻灯片。
2.点击功能区的插入标签,然后点击视频>我的电脑上的视频(或其他PPT中的文件中的视频)版本)。
3.嗯,这是最重要的一步。您必须选择一个显示您想要的倒计时的视频。但是从哪里得到这个视频呢?没问题,来自YouTube
!如果你想倒计时 5 分钟,只需输入 YT countdown 5 min
,你就会得到一堆有用的视频。如果你的倒计时是 41 分钟,同样的技术也适用。接下来,您将下载视频,为此只需在视频 URL 中的 youtube.com 之前添加 ss
。您将被重定向到savefrom.net,您可以在其中直接下载您的视频。将视频存储在您的 PC 中后,选择它以将其插入到您的演示文稿中(您可能需要重复第 2 步)。
4. 现在,您的视频出现在第一张幻灯片中。不要忘记您可以随时调整视频倒计时的大小和位置;例如,您可以调整它的大小并将其拖动到右上角。
5.接下来,选择您的视频,点击功能区上的播放选项卡(视频工具播放)。点击开始下拉列表,选择自动。事实上,您将视频倒计时设置为自动播放。
6.点击功能区的动画标签,然后点击动画窗格按钮。
7.在显示的结果动画窗格中(在右侧),双击第一个动画;这将打开播放视频对话框。
8.在播放视频对话框中,选择效果标签。在停止播放部分,点击 After 单选按钮 并将值设置为 999 - 最大值(您的演示文稿不会超过 999 张幻灯片,我很确定:p)。最后点击确定。
就是这样!恭喜,你终于完成了。现在您可以做的是点击幻灯片放映,您会看到倒数计时器显示随着您从一张幻灯片进行到另一张幻灯片的时间减少。
【讨论】:
如果您需要其他帮助,请告诉我。 您的解决方案有问题。 1) 它涉及侵犯版权(并可能违反 YouTube 的服务条款)和 2) 不允许倒计时以匹配品牌和格式。您的解决方案只允许播放视频,我们将被视频创建者的设计所困扰。 3) 现在变成另一个必须映射和存储的文件。我想要一个解决方案,让它在 PowerPoint 中正常工作而无需添加视频。以上是关于PowerPoint - 创建倒数计时器 - VBA的主要内容,如果未能解决你的问题,请参考以下文章
如何创建在使用 AnimationController 创建的倒数计时器期间发出的警报?