VBA分配导致程序崩溃但仅在演示文稿视图中

时间:2015-07-23 12:53:59

标签: vba powerpoint powerpoint-vba

我正在尝试为Powerpoint调试用户表单。当我使用编辑器中的运行按钮直接运行它时,这一切似乎都很完美。然而,当我尝试使用固定在masterslide中的按钮从演示模式运行它时,程序似乎突然崩溃。 表单将运行,当我按下确定时,我用于调试的第一个消息框将显示,然后没有。

这是代码

    Private Sub OKBut_Click()
' Message Box Working
MsgBox ("OkBut running")
Dim oSlide As Slide

Dim lCurrentView As Long

      ' Get the current view type.
lCurrentView = ActiveWindow.ViewType
'These message boxes do not appear
MsgBox ("Test")
MsgBox (CStr(lCurrentView))

先谢谢你们

2 个答案:

答案 0 :(得分:1)

ActiveWindow.ViewType仅适用于设计模式。当您运行幻灯片放映时,没有活动的窗口,它将抛出一个错误,这就是您没有点击消息框调用的原因。

答案 1 :(得分:0)

你是否在OKbut sub的末尾卸载表单?

Unload Me

不要隐藏它,因为这肯定会引起问题。

如果您使用幻灯片上的形状而不是ActiveX控件来触发表单,您可能还会发现用户体验会更好。当您在幻灯片/母版/布局上使用ActiveX控件时,Microsoft将显示大量详细的安全消息,甚至可能会阻止内容。

在标准模块中添加一个sub并将其指定给master上的形状:

Sub ShowMyForm(ClickedShape as Shape)
  frmMyForm.Show
End Sub

最后,幻灯片放映期间会出错:

lCurrentView = ActiveWindow.ViewType

您可以使用以下方式在幻灯片放映模式中处理幻灯片放映窗口:

Application.SlideShowWindows(1)

如果您在幻灯片放映期间查找幻灯片索引,请使用以下命令:

ActivePresentation.SlideShowWindow.View.Slide.SlideIndex