VBA PowerPoint幻灯片更新“自上次以来的天数”

时间:2018-12-06 00:00:20

标签: powerpoint-vba

我的第一篇文章,如果我错过了这里明显的内容,或者提出了近期无意中遇到的无意重复问题,我深表歉意。

所以我正在PowerPoint 2016中进行演示:

  • 我的演示文稿被保存为启用宏的。
  • 在宏安全性中启用了宏。
  • 幻灯片将在24/7的大型监视器上运行。
  • 跑步时,不会有任何人为互动。
  • 幻灯片放映将持续长达一个月的时间,然后使用新的新闻/信息对其进行更新。

我要做什么:

因此位置28的幻灯片是“自上次失误事故发生以来的天数” 幻灯片。

我的用于更新文本框的宏可以很好地工作,如果手动触发,我会发布此部分,以便您可以确切地看到我要触发的内容。

Sub Countup()
Dim thedate As Date
Dim daycount As Long
Dim Icount As Integer
ActivePresentation.Slides(28).Shapes("LTAno").Select
thedate = "10/04/2017"
daycount = DateDiff("d", thedate, Now)
ActivePresentation.Slides(28).Shapes("LTAno").TextFrame.TextRange.Text = daycount
End Sub

在此之上(这两个部分在模块中)是问题代码:

Public Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
If SSW.View.CurrentShowPosition = 28 Then
Call Countup
End If
End Sub

我使用msgbox进行了检查,以确保幻灯片28确实是幻灯片28,并且弹出没有问题。因此,我将msgbox行更改为CALL函数。

我认为这是我的问题所在?我的头很痛...有人能指出我正确的方向吗? :)

无论我如何开始幻灯片放映,除非手动触发宏,否则幻灯片上的数字都不会更新。

1 个答案:

答案 0 :(得分:1)

不要“选择”形状。例如:

Sub Countup()
    Dim thedate As Date
    Dim daycount As Long
    Dim Icount As Integer
    Dim vShape 
    Set vShape = ActivePresentation.Slides(28).Shapes("LTAno")
    thedate = "10/04/2017"
    daycount = DateDiff("d", thedate, Now)
    vShape.TextFrame.TextRange.Text = daycount
End Sub