Visio (Application.Undo 方法)

當最近的復原單位可以回復時,回復該復原單位。

語法

運算式撤銷

expression 代表 Application 物件的變數。

傳回值

註解

使用 Undo 方法可以一次為動作還原一個復原單位。

程式碼可以呼叫 Undo 方法的次數取決於程式碼是否在開啟的復原單位範圍內執行。 如果是,程式碼會在開啟的復原單位範圍內執行:

  • 由 Microsoft Visio 使用者介面所叫用的巨集或附加元件。

  • 回應 VisioIsIdle 事件以外的 Visio 事件的事件處理常式中。

  • 在使用者建立的復原範圍中。

如果程式碼未在開啟的復原單位範圍內執行,它可以針對目前位於 Visio 復原堆疊上的每個復原單位呼叫 Undo 方法。 您可以在復原堆疊上設定最大單位數 (20 是 [Visio 選項] 對話方塊之 [進階] 索引標籤上的預設) (按一下 [檔案]索引標籤,然後按一下 [選項) ]。 如果 Undo 方法的呼叫數目超過堆疊上的復原單位數目,則不會採取任何動作,而且 Undo 方法不會引發任何例外狀況。

如果程式碼是在開啟的復原單位範圍內執行,它可以針對開啟的復原單位中的每個作業呼叫 Undo 方法一次。 如果 Undo 方法有其他呼叫,則會引發例外狀況,而且不會採取任何動作。 例如,如果宏中的程式碼執行兩個作業,它可以呼叫 Undo 方法兩次。 如果宏第三次呼叫 Undo 方法, Undo 方法就會引發例外狀況。

從復原單位範圍內呼叫 Undo 方法的程式碼無法呼叫 Redo 方法來反轉動作。 只有在沒有開啟的復原單位時,才能呼叫 Redo 方法。

如果 Visio 實例目前正在執行復原或取消復原,則 Undo 方法也會觸發例外狀況。 若要判斷 Visio 實例是在進行復原還是取消復原,請使用 IsUndoingOrRedoing 屬性。

您可以從 VisioIsIdle 事件處理常式呼叫 Undo 方法,因為只有當 IsUndoingOrRedoing 屬性為 False 時,才可以觸發 VisioIsIdle 事件。 您也可以從不是由 Visio 實例所叫用的程式碼呼叫 Undo 方法,例如,從 [Visual Basic 編輯器] 或外部程式所叫用的程式碼呼叫此方法。

您可以復原多數的動作,但不是全部的動作。 若要還原 Undo 方法所造成的影響,請使用 Redo 方法。

範例

這個 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 支援與意見反應