怎样设置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则表示终止放映状态

二、以一个指针旋转作为案例处理过程

(一)在空白幻灯片上绘制一个指针和一个小圆,并通过联结构成一个真正的指针。

怎样设置ppt自动放映停几秒(强制终止PPT放映时启用带延时的DO)(1)

图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

并为这些代码加必要的注释,如下截图所示

怎样设置ppt自动放映停几秒(强制终止PPT放映时启用带延时的DO)(2)

图2 注释截图

(三)运行效果界面截图

1、幻灯片放映时自动启动指针以秒的时间角度不断旋转

怎样设置ppt自动放映停几秒(强制终止PPT放映时启用带延时的DO)(3)

图3 放映时指针旋转

2、终止幻灯片放映时转动的动指针归位的情况

怎样设置ppt自动放映停几秒(强制终止PPT放映时启用带延时的DO)(4)

图4 结束放映时指针归位

三、VBA方法终止PPT放映时启用带延时的循环过程小结

这里所用的非常关键技术是设置一个全局的布尔型公有变量exit_flag作为是否退出放映的状态;同时用SlidesShowWindows(1).View.State属性捕获放映状态,并根据该状态特定值做出相应的事件处理。

所以不能简单地通过结束放映事件OnSlideShowTerminate去用Exit Sub简单处理哦!

好了,今天就说到这里,下一个作品将利用这个技术实现PPT放映是自动启用我们自己设计的钟表播放哦,希望大家到时候喜欢哦!

最后,还是希望大家点评和关注我的头条号“跟我学Office高级办公”哦,谢谢!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页