宏在PowerPoint for Mac 2016中不起作用

时间:2018-11-17 20:30:21

标签: vba macos powerpoint

我有一个带有记分板的PowerPoint文件,该记分板使用以下代码。该代码在Windows中的Powerpoint上工作正常,但是在Mac中运行Powerpoint时发现该代码/按钮不起作用(所有宏均已在设置中启用)。据我了解,Macs / vba在2008年之后将在Mac中受支持。任何见解将不胜感激。该文件另存为启用了PPTM /宏的演示文稿。
(我进行了搜索,但未找到有关此答案的信息。谢谢,我是新来的人,正在自学中)

Sub Label1Plus100()
Label1.Caption = (Label1.Caption) + 100
End Sub

Sub Label1Minus100()
Label1.Caption = (Label1.Caption) - 100
End Sub

Sub LabelReset()
Label1.Caption = 0
End Sub

Sub ResetandExit()
Label1.Caption = 0
ActivePresentation.SlideShowWindow.View.Exit
End Sub

1 个答案:

答案 0 :(得分:0)

好的,再次避免使用ActiveX对象。

接下来,我将所有内容放到幻灯片上,而不是在幻灯片母版上放一些东西。对于要更改的文本,请使用纯文本框而不是ActiveX对象。首先在文本框中选择一个名称,然后在VBA立即窗口中为其命名,例如:

ActiveWindow.Selection.ShapeRange(1).Name = "Score"

然后在VBA编辑器中,插入一个新模块,并添加以下内容:

Sub IncrementScore()
   With SlideShowWindows(1).View.Slide.Shapes("Score")
       .TextFrame.TextRange.Text = .TextFrame.TextRange.Text + 100
   End With
End Sub

然后将此宏用作加号按钮的操作设置。类似地修改减号和清除按钮。

严格来说,虽然VBA会尝试为您覆盖,但添加数字和字符串(即文本)值并不是一个好习惯,因此最好使用:

.TextFrame.TextRange.Text = Cstr(Clng(.TextFrame.TextRange.Text)+100)

这会将现有文本转换为Long,将其加100,然后将结果转换回String,以插入文本框中。