怎样设置ppt自动放映停几秒(强制终止PPT放映时启用带延时的DO)
Hello,大家好,有部份VBA技术爱好者可能在PPT中用过幻灯片的放映和结束放映两种状态的VBA触发事件:一来是幻灯片放映时触发某种行为,二来是终止放映时又触发另外的某种行为。这些都是PPT放映过程中起到很好的特效作用。而如果加进了带延时的Do While循环,如果想结束放映时强制退出这个循环,可不是件容易的事,为什么说呢?大家如果亲自去实践一下,自然就有所体会。那么,能否实现解决这个棘手的问题呢?我仔细潜心研究了几天,总算弄了大概眉目出来了,还是愿意跟大家分享一下,也算抛砖引玉吧,如果各位有更好的解决方案方法也请不吝评论回复哦,在此先谢谢了!
好了,不废话了,我们先还是来一下我们说的技术的知识储备吧。
一、知识储备
(一)PPT放映时应该触发的事件过程
Sub OnSlideShowPageChange()
事件代码
…
End Sub
(二)PPT终止放映时应该触发的事件过程
Sub OnSlideShowTerminate()
事件代码
…
End Sub
(三)PPT中的延时过程定义
Sub delay(t As Single)
Dim t1 As Single
t1=Timer
Do
DoEvents'转让控制权,让操作系统执行其他事情
Loop While Timer-t1<t
End Sub
(四)PPT放映状态属性捕获
SlidesShowWindows(1).View.State
如果为1则表示处于放映状态,为5则表示终止放映状态
二、以一个指针旋转作为案例处理过程
(一)在空白幻灯片上绘制一个指针和一个小圆,并通过联结构成一个真正的指针。
图1 绘制旋转的指针
(二)VBA环境下插入一个模块,并输入如下代码
Public shp As Shape, exit_flag As Boolean
Sub OnSlideShowPageChange()
exit_flag = False
Rotate_shape
End Sub
Sub OnSlideShowTerminate()
exit_flag = True
MsgBox "Good bye,see you next time!"
End Sub
Sub Rotate_shape()
Set shp = ActivePresentation.Slides(1).Shapes(1)
Do While exit_flag = False
If SlideShowWindows(1).View.State = 5 Then
shp.Rotation = 0
Exit Do
Else
delay 0.1
shp_offset = Second(Now) * 6
shp.Rotation = shp_offset
End If
Loop
End Sub
Sub delay(t As Single)
Dim t1 As Single
t1 = Timer
Do
DoEvents
Loop While Timer - t1 < t
End Sub
并为这些代码加必要的注释,如下截图所示
图2 注释截图
(三)运行效果界面截图
1、幻灯片放映时自动启动指针以秒的时间角度不断旋转
图3 放映时指针旋转
2、终止幻灯片放映时转动的动指针归位的情况
图4 结束放映时指针归位
三、VBA方法终止PPT放映时启用带延时的循环过程小结
这里所用的非常关键技术是设置一个全局的布尔型公有变量exit_flag作为是否退出放映的状态;同时用SlidesShowWindows(1).View.State属性捕获放映状态,并根据该状态特定值做出相应的事件处理。
所以不能简单地通过结束放映事件OnSlideShowTerminate去用Exit Sub简单处理哦!
好了,今天就说到这里,下一个作品将利用这个技术实现PPT放映是自动启用我们自己设计的钟表播放哦,希望大家到时候喜欢哦!
最后,还是希望大家点评和关注我的头条号“跟我学Office高级办公”哦,谢谢!
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com