Как описано в 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
Кто-нибудь знает реальное решение проблемы или лучший обходной путь? Хотя я не нашел его, может быть, есть решение для Word или Excel, которое можно перенести в PowerPoint?