我想在功率点演示中添加一个计数器。有人告诉我,这在VBA中可能是可行的。你知道这是否可以在VBA中完成吗?
基本上这就是我想做的事情: 显示一个计数器,表示自我的演示开始以来租用的汽车数量。因此,例如,在开始时计数器为0,每分钟增加2000(这只是一个例子)。我们可以在每张幻灯片上看到计数器,所以在我的演讲结束时,人们可以看到(我会告诉他们)自从谈话开始以来X(大量)汽车已被租用。
我试图在互联网上找到一些东西但没有成功......我希望有人能够帮助我吗?
答案 0 :(得分:0)
我给你一些想法。即使我没有提供任何代码,它们也可能会有所帮助。
通常,您需要在演示文稿中使用“计时器”之类的内容,这些内容将从您的演示文稿开始并计算使用的时间。不幸的是,在PowerPoint中没有这样的东西。您可以使用一些外部解决方案,如C#COM加载项,但它非常复杂。
您可以使用PP应用程序事件,但汽车的价值不会每分钟都会改变,但您输入的每张新幻灯片或任何其他事件都会触发(如反向移动等)。它有点复杂,但在我们的(StackOverflow用户)知识范围内。
您可以根据link搜索或询问我曾经找到很多有趣想法的地方。
我答应提供解决方案,因此即使问题已经结束,我也愿意这样做。因此,我通过重新编辑我希望允许的答案来做到这一点。
我们必须确保有一个“文本框”,其中“计数值”将放在每张幻灯片上。将以下代码添加到Module 1并运行它。
Sub Add_CarValue_Text()
Dim SLD As Slide, SHP As Shape, shCarValue As Shape
Dim boCarValue As Boolean
For Each SLD In ActivePresentation.Slides
For Each SHP In SLD.Shapes
If SHP.Name = "CarValue" Then
boCarValue = True
Exit For
End If
Next
If Not boCarValue Then
Set shCarValue = SLD.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 150, 50)
With shCarValue
.Name = "CarValue"
.TextFrame.TextRange.Text = "Cars counter: "
End With
End If
boCarValue = False
Next
End Sub
添加新的类模块并在其下面放置代码。必要时进行更改。
Public WithEvents PPApp As Application
Private TimerStart As Long
Private Const increasePerMinute = 1000
Private Sub PPApp_SlideShowBegin(ByVal Wn As SlideShowWindow)
TimerStart = Int(Timer)
End Sub
Private Sub PPApp_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
If Not Wn.View.Slide.Shapes("CarValue") Is Nothing Then
Dim Lap As Integer
Lap = (Int(Timer) - TimerStart) / 10 'change for 60 to change from 10sec to 1 min
Wn.View.Slide.Shapes("CarValue").TextFrame.TextRange = "Cars volume: " & Lap * increasePerMinute
End If
End Sub
将以下代码添加到Module2并运行该过程。
Public tmpPPApp As New AppClass
Sub StartUp()
Set tmpPPApp.PPApp = PowerPoint.Application
End Sub
开始演示。
重要!如果您在代码中更改了任何内容,请再次运行第3步。此外,为了以防万一,您需要在午餐前完成程序3。