触发器+VBA……PPT:我不做幻灯片了jojo!

论坛 期权论坛 期权     
日漫汇   2019-6-29 21:11   1883   0
大家好,又到了尾页君的PPT黑科技时间~


本次分享的内容为:PPT自带触发器配合简单的VBA编程运用,突破这款软件功能的局限。


可能不少人一提到编程代码之类的东西,都会产生一定的恐惧。


不过我今天只会给出几个代码的案例,大家只要复制代码,修改里头的参数,就能达到预期的效果——


VBA是适用于office办公软件的基本语言,VBA语句编辑出来的东西叫做“宏”,而“宏”可以通过主动运行/给目标插入——链接——动作,在幻灯片放映时鼠标点击运行或者鼠标滑过(悬停)运行。




而“宏”的编辑在开发者工具栏里,如果大家的PPT里没有开发者工具一栏,可以右键自定义功能区添加。




点开宏后可以随便取个名字,然后点击创建


你会看到一个这样的默认空宏


今天要跟大家分享的几种宏分别是——使一个数字变化的宏,以及当这个数字大于/小于/等于某个数值时,触发跳转到指定页数/或者触发物体出现、隐藏的宏。

在编写宏之前我们需要学会给目标命名,通常想知道一个图片或者文本的名字,可以通过给它加个动画获取。比如我们给一个插入的三角形插入一个出现的动画,便能知道它的名字叫“等腰三角形 7”


然而当你把它复制到另外一页的时候,它的名字变成了“等腰三角形 3”


这样会给VBA程序的编写带来很多不必要的麻烦,所以我们可以在开始——选择窗格里,点击左键后修改它的名字,比如我把它的名字改成“A”这样一来,不管把这个三角形粘贴到哪一页,它的名字都叫“A”。


同理,我们把数值为100的文本框名字改为“B”


这里“A”和“B”都在幻灯片的第三页,当然二者即使不在同一页也能关联影响。


编写宏:将B的数值-10,当B<0时,跳转到第五页。

将B的数值-10的代码是
Application.ActivePresentation.Slides(3).Shapes("B").TextEffect.Text=Application.ActivePresentation.Slides(3).Shapes("B").TextEffect.Text - 10

这里加减号和等号前后有没有空格没影响,保存代码的时候会自动加上。

当B<0时,跳转到第五页。
if Application.ActivePresentation.Slides(3).Shapes("B").TextEffect.Text < 0 Then
Application.ActivePresentation.SlideShowWindow.View.GotoSlide (5)
End If

因为微信公众号输入空格的形式有点迷,所以另外截一张图给大家,总之是这样分行的。


如此一来,每次点击这个三角形,右边的数字就会相应地扣10点。



这样做有什么意义呢?比如应用在教学方面,有50道选择题,给每道题的正确答案插入一个宏,效果是:第一页的数值初始值为0的文档B+2
Application.ActivePresentation.Slides(1).Shapes("B").TextEffect.Text=Application.ActivePresentation.Slides(1).Shapes("B").TextEffect.Text + 2

当文档B的数值达到60点,测验合格,跳转到PPT的第十页,提示测验合格。
if Application.ActivePresentation.Slides(3).Shapes("B").TextEffect.Text = 60 Then
Application.ActivePresentation.SlideShowWindow.View.GotoSlide (10)
End If

当然,为了避免连续点击一个正确答案重复得分,我们给以给选择题的答案加个透明度为99%的挡板,当点击任意一个答案的时候,挡板都会出现,防止重复点击。


(超链接和宏只能选择其中之一,不能都选,但是宏和超链接可以和触发声音共存)





既然“点击正确答案增加指定数值”以及“当数值达到一定程度时跳转到指定页面”都能够实现,那么一个“当好感度达到80触发剧情A”,“所有选项选完,好感度不足80,触发剧情B”的galgame就能轻易实现了。


在不能进行数值判断的时候,一个10个2选1的剧情PPT需要准备2的10次方个路线。

虽然可以把选项组合引导出的剧情方向同化(比如AAB和BAA导向同一条分支剧情),但是这要花费大量的脑细胞,容易出BUG,而且要做的分支依然不少。


而有了数值判断,只要10段剧情+N种数值判断得到的指定结局页就可以了,我们甚至能对不同的选项进行分数加权。


此外我们还可以设置需要高速连点的QTE式导出不同结局的玩法。


比如5秒后PPT切换到下一页(第四页),而在这5秒内点击三角形11次后,数值变成负数,跳转到第五页。


只要你有足够的想象力,简单的数值判定可以创造出无数的玩法。

然后再说说数值触发物体出现隐藏的宏。当数值B小于0时,正方形隐藏,圆形出现。


这里的出现和隐藏,指的是选择框格里那个眼睛一样的符号,因为我们要做的是正方形隐藏,圆形出现。所以我们先把圆形隐藏起来,正方形则为可见状态。


其代码为
If Application.ActivePresentation.Slides(3).Shapes("B").TextEffect.Text < 0 Then
Application.ActivePresentation.Slides(3).Shapes("正方形").Visible = msoFalse
Application.ActivePresentation.Slides(3).Shapes("圆形").Visible = msoCTrue
End If

这里的msoCTrue指的是出现,msoFalse指的是隐藏。行与行之间加多少行空格没影响,只是为了美观。


当B>0的时候,正方形存在,圆形隐藏


点了几下三角形后,B<0了,正方形隐藏圆形出现。


这样做有什么用呢?

举个例子,可以用它来触发一些肉眼看不见的挡板出现和消失。

比如我们做一款打飞盘的游戏,当子弹数=0的时候,透明度为99%的挡板出现,点击挡板发出没子弹的咔嚓声。(我降低了挡板的透明度,让大家看得清楚一些,99%透明度的挡板看不见但是挡板底层的东西点不到。)


红色区域滑动触发换弹效果,其效果为子弹数=6


当子弹数>0的时候,挡板消失,玩家可以正常点击飞盘。



值得一提的是,让数值变化的代码是
Application.ActivePresentation.Slides(3).Shapes("B").TextEffect.Text=Application.ActivePresentation.Slides(3).Shapes("B").TextEffect.Text - 10
而让数值等于某个值的代码则简单很多,不过等于号后面的数值要加个引号,顺带一说,引号里还可以填文字或者其他符号。
Application.ActivePresentation.Slides(3).Shapes("B").TextEffect.Text = "6"

有了这些简单的VBA编写的宏的帮助,一些PPT原本难以实现的功能被大幅度简化了,用比较时髦的话来说,就是你的PPT迈入了5G时代=w=


微信群的人数依然处于扫码上限状态,继续开了新的微信交流群(没加过的希望能加一下,这是对我们的极大支持),扫描下方的二维码即可加入。





分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP