为什么在从动作调用的PPT VBA脚本中忽略断点?

时间:2013-11-20 09:34:52

标签: vba powerpoint powerpoint-vba

我将PowerPoint中的形状与委派给VBA中的脚本的操作相关联。在脚本本身中,我定义了一个断点并引发错误(仅用于调试目的)。

当我运行演示文稿并单击形状时,忽略断点并且不显示任何错误消息,代码只是静默地停在引发错误的行。

当我从表单按钮的事件处理程序运行VBA脚本时,VBA按预期运行:遵循断点并弹出错误消息。

是否有解释,为什么VBA在执行从操作调用的过程时表现不同,而不是从事件处理程序执行或直接从编辑器执行。更重要的是:是否有一种治疗方法,即我能做些什么才能在行动中获得预期的行为?

我目前在Win7下使用PPT2010,但PPT2002显示了相同的行为。

2 个答案:

答案 0 :(得分:1)

我之前已经注意到了这个和类似的事情。我很确定这是故意的...如果你正处于演示文稿的中间,你不希望看到错误消息或者更糟糕的是,被转储到IDE中,所以PPT只是默默地失败了。

尝试在运行代码之前编译一次代码,甚至尝试手动运行它,而不是单击指定的操作按钮。

当断点失败时,我总是在代码中发现问题;只要代码有效并且不会引发错误,即使从操作设置中调用代码,断点也会起作用。

答案 1 :(得分:0)

在将代码放在主幻灯片后面并且其他代码放在不是主幻灯片的幻灯片后面时,我看到了同样的PowerPoint问题。这都在同一个演示文稿中。从非主幻灯片调用主幻灯片中的子或函数时,主幻灯片代码会执行但忽略中断。我不确定如何清楚地表达这一点,但似乎来自启动幻灯片的调试'命令'得到尊重并按照您的预期采取行动,但不是主幻灯片调试命令,因为它们位于不同的域或名称空间等。进程仅对一个“域”有效。主主幻灯片和非主幻灯片不共享同一个域。