简而言之,我遇到的问题是,在演示过程中使用VBA更改字体大小时,幻灯片将再次运行该幻灯片的所有动画。更改其他质量(例如字体颜色或形状填充)后,幻灯片将不会再进行动画处理。
更长的版本:我正在PowerPoint中创建一个工具,供我的教练使用,以进行测验和基于计算机的培训。我为按钮的每种状态(正确,错误或未回答)使用模板形状,然后使用.pickup和.apply更改问题幻灯片上的形状格式。在运行时,幻灯片将根据动画进行构建,用户单击一个选项,然后形状就会立即格式化。但是,字体大小也会更改以反映模板形状。当我临时存储字体大小并在.apply之后重新应用它时,在运行时,幻灯片会进行动画处理,用户单击一个选项,幻灯片会再次运行动画(尽管使用新的格式正确)。该代码有效,但是某些更改导致幻灯片再次进行动画处理(文本,大小),而某些更改没有进行动画处理(形状颜色,文本颜色)。这是我需要避免的幻灯片的第二个动画。
Windows 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个形状,每个形状均会在单击时调用上述代码。
在幻灯片放映期间: 预期-动画,用户点击形状,所做的更改,没有其他操作/动画。
实际结果-动画,用户点击形状,动画(包括更改)。
感谢您提供的所有帮助和考虑因素。感谢您的时间。