【问题标题】:"Days Since Last..." VBA PowerPoint Slide Update“自上次……”VBA PowerPoint 幻灯片更新
【发布时间】:2019-05-07 15:11:48
【问题描述】:

我的第一篇文章,如果我在这里遗漏了一些明显的东西,或者无意中重复了最近已经解决的问题,我们深表歉意。

所以我正在 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 函数。

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

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

【问题讨论】:

    标签: vba powerpoint


    【解决方案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
    

    【讨论】:

    • 你的代码成功了!我对 OnSlideShowPageChange 非常着迷,以至于我没有想到我在宏中尝试做的事情可能过于复杂,或者只能在编辑模式下工作。现在我仔细看一下似乎很明显。非常感谢 - 你今天教会了我一些东西! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2012-09-02
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多