Application.Undo 方法 (Visio)

取消最近的撤消单元(如果可以取消撤消单元)。

语法

表达式撤消

expression:表示 Application 对象的变量。

返回值

Nothing

注解

使用 Undo 方法一次取消撤消单元的一个动作。

代码可以调用 Undo 方法的次数取决于代码是否在打开的撤消单元范围内执行。 在下列任一情况下,代码将在打开的撤消单元范围内运行:

  • 由 Microsoft Visio 用户界面调用宏或加载项。

  • 事件处理程序响应 Visio 事件而不是 VisioIsIdle 事件。

  • 在用户创建的撤消范围中。

如果代码不是在打开的撤消单元范围内执行的,它可以对目前 Visio 撤消堆栈上的每个撤消单元调用 Undo 方法。 可以在撤消堆栈上设置最大单位数 (20 是“Visio 选项”对话框的“高级”选项卡上的默认) (单击“文件”选项卡,然后单击“选项”) 。 如果调用 Undo 方法的次数超过堆栈上的撤消单元数,则不会执行任何操作并且 Undo 方法不会引发任何异常。

如果代码是在打开的撤消单元范围内执行的,它可以对打开的撤消单元中的每个操作调用一次 Undo 方法。 如果另外还要调用 Undo 方法,它将引发异常并且不执行任何动作。 例如,如果宏中的代码执行两个操作,它可以调用 Undo 方法两次。 当该宏第三次调用 Undo 方法时,Undo 方法将引发异常。

从撤消单元范围内调用 Undo 方法的代码不能调用 Redo 方法来取消动作。 仅当不存在打开的撤消单元时,才可以调用 Redo 方法。

如果 Visio 实例当前正在执行撤消或恢复操作,Undo 方法也将引发异常。 若要确定 Visio 实例是撤消还是重做,请使用 IsUndoingOrRedoing 属性。

您可以从 VisioIsIdle 事件处理程序调用 Undo 方法,因为仅当 IsUndoingOrRedoing 属性为 False 时才能触发 VisioIsIdle 事件。 您也可以从非 Visio 实例调用的代码(例如,从 Visual Basic 编辑器或外部程序调用的代码)调用 Undo 方法。

您可以撤消大多数动作,但不能撤消全部。 使用 Redo 方法来取消 Undo 方法的效果。

示例

以下 Microsoft Visual Basic for Applications (VBA) 宏显示如何撤消和恢复动作。

 
Public Sub Undo_Example()  
 
    Dim vsoShape As Visio.Shape  
 
    'Draw a rectangle, use Undo to delete it, and  
    'then use Redo to redraw it. 
    Set vsoShape = ActivePage.DrawRectangle(1, 5, 5, 1) 
  
    'Delete the shape.  
    Visio.Application.Undo  
     
    'Bring it back.  
    Visio.Application.Redo  
 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。