gpt4 book ai didi

VBA Powerpoint - 打开时自动运行并在后台运行

转载 作者:行者123 更新时间:2023-12-04 14:36:45 25 4
gpt4 key购买 nike

我正在尝试创建一个 powerpoint 演示文稿,它会显示工作场所受伤后的天数。

当用户首次打开演示文稿时,我希望运行一个宏,提示输入自上次受伤以来的日期。到目前为止,我有这个似乎工作正常:-

Sub EveryDayAccidents()
Dim injdate As String
Dim lastdate As String
Dim injfree As Integer
Dim BnrMsg As String

'This Macro defines the latest injury date

injdate = InputBox("Please enter last injury date in this format: dd/mm/yyyy")
lastdate = injdate
injfree = DateDiff("d", injdate, Now)
BnrMsg = injfree
ActivePresentation.Slides(3).Shapes("Accidents").TextFrame.TextRange = BnrMsg
End Sub

我缺少的是一些代码或另一个在演示文稿打开时将调用此代码的子程序。

文本框会在日期自然更改时更新,还是需要在后台运行某些程序来更新文本框?计划是让演示文稿中的幻灯片循环运行,直到发生事故,然后将其重置并重新开始。

任何帮助将不胜感激!!

编辑

所以现在我有这个:-

Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
If SSW.View.CurrentShowPosition = 3 Then

injdate = ActivePresentation.Slides(3).Shapes("Accidents").TextFrame.TextRange
injfree = DateDiff("d", injdate, Now)
BnrMsg = injfree
ActivePresentation.Slides(3).Shapes("Accidents").TextFrame.TextRange = BnrMsg

End If
End Sub

它会在演示文稿运行时更新幻灯片...但它将文本框中的数字视为实际日期(65 变成 05/03/1900),这意味着我的日期差异在41,600...我想做的是暂时完全忽略日期。

如果我在文本框中输入一个数字(比如 1),然后我希望该数字每天递增 1,我认为这段代码现在无论如何都会这样做,但我缺乏转换的技能: -

injfree = DateDiff("d", injdate, Now)

进入

injfree = injfree + 1 when date changes (garbage i know)

请帮忙:)

最佳答案

太棒了!!!首先感谢@David Zemens 和@Steve Ringsberg!

我已经想出了一个可能在未来帮助其他人的解决方案,所以这里是最终结果。这样做的好处是不需要插件或其他任何东西,结果证明最终答案非常简单......

对于我想在其上执行此操作的每张幻灯片,我在单独的模块中都有以下代码以保持清晰,唯一的区别是变量、幻灯片编号和文本框名称。

Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
If SSW.View.CurrentShowPosition = 2 Then

actdate = ActivePresentation.Slides(2).Shapes("Last Prod").TextFrame.TextRange
injfree = DateDiff("d", actdate, Now)
BnrMsg = injfree
ActivePresentation.Slides(2).Shapes("Activity").TextFrame.TextRange = BnrMsg

End If
End Sub

此代码的作用是,当演示文稿的当前位置到达幻灯片 2,3 等时,演示文稿将运行附加到该幻灯片的代码。在这里,我使用了一个实际上不在幻灯片上的小文本框,并在其中输入了开始日期。代码随后将该日期命名为“actdate”,然后找出该日期与当前日期之间的差异,然后更新第二个文本框在幻灯片上显示差异值。

因此,如果“Last Prod”(文本框)= 01/01/2014 并且当前日期为 02/01/2014,则“事件”(文本框)= 1

真的很简单:)

关于VBA Powerpoint - 打开时自动运行并在后台运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22964263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com