PowerPoint - 创建倒数计时器 - VBA
PowerPoint - Create Countdown Timer - VBA
我正在做一个项目,我们希望在学生完成项目时在幻灯片上显示一个倒数计时器。
我在网上找到了多个示例,但是在尝试根据我们的目的调整它们时,我无法按预期将代码设置为 运行。
在我的测试中,我在代码中添加了断点以及 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
嗯,好消息是无需任何代码行即可完成。
但是,它需要的不仅仅是单击即可完成(保证有效)。
1. 导航到演示文稿的第一张幻灯片。
2.单击功能区的插入选项卡,然后单击视频 > 我的电脑上的视频(或其他PPT版本的Video from File)。
3.好了,这是最重要的一步。您必须选择一个显示您想要的倒计时的视频。但是从哪里得到这个视频?没问题,来自 YouTube
!如果你想要倒计时 5 分钟,只需输入 YT countdown 5 min
,你就会得到一堆有用的视频。如果你的倒计时是 41 分钟,同样的技巧也适用。接下来,您将下载视频,为此只需在 youtube.com in the URL of the video. You will be redirected to savefrom.net 之前添加 ss
,您就可以直接下载视频。将视频存储到您的 PC 后,选择它以将其插入您的演示文稿(您可能需要重复步骤 2)。
4. 现在,您的视频出现在第一张幻灯片中。不要忘记,您可以随时调整视频倒计时的大小和位置;例如,您可以调整它的大小并将其拖到右上角。
5. 接下来,select 您的视频,单击功能区上的 播放选项卡 (视频工具播放)。单击开始下拉列表,选择自动。事实上,您将视频倒计时设置为自动播放。
6. 单击功能区的 动画选项卡 ,然后单击 动画窗格 按钮。
7. 在出现的结果动画窗格中(右侧),双击第一个动画;这将打开“播放视频”对话框。
8. 在“播放视频”对话框中,select 效果选项卡。在“停止播放”部分,单击 After 单选按钮 并将值设置为 999 - 最大值(您的演示文稿不会超过 999 张幻灯片,我很确定 :p)。最后点击确定
就是这样!!恭喜你,你终于完成了。现在您可以做的是单击“幻灯片放映”,您会看到倒计时器显示的时间随着幻灯片的播放而减少。
我有 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
我正在做一个项目,我们希望在学生完成项目时在幻灯片上显示一个倒数计时器。
我在网上找到了多个示例,但是在尝试根据我们的目的调整它们时,我无法按预期将代码设置为 运行。
在我的测试中,我在代码中添加了断点以及 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
嗯,好消息是无需任何代码行即可完成。 但是,它需要的不仅仅是单击即可完成(保证有效)。
1. 导航到演示文稿的第一张幻灯片。
2.单击功能区的插入选项卡,然后单击视频 > 我的电脑上的视频(或其他PPT版本的Video from File)。
3.好了,这是最重要的一步。您必须选择一个显示您想要的倒计时的视频。但是从哪里得到这个视频?没问题,来自 YouTube
!如果你想要倒计时 5 分钟,只需输入 YT countdown 5 min
,你就会得到一堆有用的视频。如果你的倒计时是 41 分钟,同样的技巧也适用。接下来,您将下载视频,为此只需在 youtube.com in the URL of the video. You will be redirected to savefrom.net 之前添加 ss
,您就可以直接下载视频。将视频存储到您的 PC 后,选择它以将其插入您的演示文稿(您可能需要重复步骤 2)。
4. 现在,您的视频出现在第一张幻灯片中。不要忘记,您可以随时调整视频倒计时的大小和位置;例如,您可以调整它的大小并将其拖到右上角。
5. 接下来,select 您的视频,单击功能区上的 播放选项卡 (视频工具播放)。单击开始下拉列表,选择自动。事实上,您将视频倒计时设置为自动播放。
6. 单击功能区的 动画选项卡 ,然后单击 动画窗格 按钮。
7. 在出现的结果动画窗格中(右侧),双击第一个动画;这将打开“播放视频”对话框。
8. 在“播放视频”对话框中,select 效果选项卡。在“停止播放”部分,单击 After 单选按钮 并将值设置为 999 - 最大值(您的演示文稿不会超过 999 张幻灯片,我很确定 :p)。最后点击确定
就是这样!!恭喜你,你终于完成了。现在您可以做的是单击“幻灯片放映”,您会看到倒计时器显示的时间随着幻灯片的播放而减少。
我有 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