【发布时间】:2012-01-04 00:34:10
【问题描述】:
如http://support.microsoft.com/kb/278591 中所述,PowerPoint 通常会将宏或加载项所做的所有更改合并到单个撤消步骤中。因此,如果您将以下代码放入 VBA 并在此处按 F5 执行两次 只会是一个撤消步骤。
Sub Move()
If ActiveWindow.Selection.Type = ppSelectionShapes Then
ActiveWindow.Selection.ShapeRange.IncrementLeft 10
End If
End Sub
我正在寻找一种方法来在更复杂的情况下更改此行为,在这种情况下,用户无需直接访问 PowerPoint 即可进行多项更改。理想情况下,从用户的角度来看,应该可以撤消与一个更改相对应的一组修改。
我发现 ExecuteMso 似乎破坏了撤消事务。因此,如果您执行以下代码两次,则会导致 4 个撤消步骤(第一个增量,ExecuteMso,第二个增量,ExecuteMso)。
Sub Move()
If ActiveWindow.Selection.Type = ppSelectionShapes Then
ActiveWindow.Selection.ShapeRange.IncrementLeft 10
Application.CommandBars.ExecuteMso "Bold"
End If
End Sub
有人知道问题的真正解决方案或更好的解决方法吗?虽然我没找到,也许有可以移植到 PowerPoint 的 Word 或 Excel 的解决方案?
【问题讨论】:
标签: vba ms-office powerpoint undo