首页 > 解决方案 > VBA PowerPoint 在演示期间切换或禁用动画

问题描述

简而言之,我遇到的问题是,在演示期间使用 VBA 更改字体大小时,幻灯片会再次运行该幻灯片的所有动画。更改其他质量,例如字体颜色或形状填充,幻灯片不会再次设置动画。

更长的版本:我正在 PowerPoint 中为我的培训师创建一个工具,以便能够构建测验和基于计算机的培训。我为按钮的每个状态(正确、不正确或未回答)使用模板形状,然后使用 .pickup 和 .apply 更改问题幻灯片上形状的格式。在运行时,幻灯片基于动画构建,用户单击选项并立即格式化。但是,字体大小也会更改以反映模板形状。当我临时存储字体大小并在.apply 之后重新应用它时,在运行时,幻灯片动画,用户单击一个选项,幻灯片再次运行动画(尽管使用新格式正确)。代码有效,但某些更改会导致幻灯片再次设置动画(文本、大小),而某些更改不会(形状颜色、文本颜色)。

视窗 7 专业版;PowerPoint 2016

除了使用 .pickup 和 .apply 之外,一个想法是改变除字体大小(填充和线条质量)以外的所有内容的质量,但对于填充,仅此一项就有 20 多种质量,这是在进入渐变数量之前停止,阴影等。我需要我的开发人员可以自由地格式化形状,因为他们希望我的代码可以快速从中提取。

.SlideShowSettings.ShowWithAnimation - 在代码开头设置为“false”,设置为“true”,结果没有变化。(尝试在下面的代码中显示。)

.SlideShowWindow.View.State - 设置为“暂停”和“运行”也没有任何影响。(尝试在下面的代码中显示。)

幻灯片上的所有对象都设置为在显示幻灯片时自动淡入。此处的简化代码设置为在单击形状时运行,并显示哪些有效,哪些无效。我已经对行进出注释,所以我可以尝试不同的东西。

Sub ProcessResponse()

'These options do not prevent re-animation when in mid-presentation:
    'ActivePresentation.SlideShowSettings.ShowWithAnimation = msoFalse
    'ActivePresentation.SlideShowWindow.View.State = ppSlideShowPaused

'The following items do NOT cause the slide to run the animation again (desired result):
    'Changing the object fill.
    'ActivePresentation.Slides(1).Shapes(1).Fill.ForeColor.RGB = RGB(50, 25, 100)

    'Changing text color.
    'ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Font.Color.RGB = RGB(50, 25, 150)

'The following lines of code cause the slide to run the animation again (undesired result):
    'Changing the font size.
    ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Font.Size = 40

    'Changing the text.
    'ActivePresentation.Slides(1).Shapes(1).TextFrame.TextRange.Text = "Changed"

'Closing the above attempts.
'ActivePresentation.SlideShowSettings.ShowWithAnimation = msoTrue

'ActivePresentation.SlideShowWindow.View.State = ppSlideShowRunning

End Sub

设置:在“下一个之后”运行动画(即淡入)幻灯片。3-4 个形状,每个形状都在单击时调用上述代码。

在幻灯片放映期间:预期 - 动画,用户点击形状,进行更改,没有进一步的动作/动画。

实际结果 - 动画、用户点击形状、动画(包括更改)。

感谢您的任何和所有帮助和考虑。感谢您的时间。

标签: vbapowerpoint

解决方案


推荐阅读