This documentation is archived and is not being maintained.

AddUndoUnit Method [Visio 2003 SDK Documentation]

Office 2003

Adds an object that supports the IOleUndoUnit or IVBUndoUnit interface to the Microsoft Office Visio undo queue.

object.AddUndoUnit (pUndoUnit)

object     Required. An expression that returns an Application, Document, or InvisibleApp object.

pUndoUnit     Required. A reference to an object that supports the IOleUndoUnit or IVBUndoUnit interface.

Version added



For information about implementing the IOleUndoUnit interface on your object, see the Microsoft Platform SDK on MSDN, the Microsoft Developer Network. For information about implementing the IVBUndoUnit interface, see Developing Microsoft Visio Solutions on MSDN.


The following procedure shows how to use the AddUndoUnit method to add an object to the Visio undo queue. When a shape is added to the active document, the procedure checks to see if it was added as a result of an undo or redo action, and if not, it adds an Undo unit.

This procedure is a member of class clsParticipateInUndo, which is defined in one of two related class modules in the Code Librarian in the Visio SDK, and is not intended to be run independently. (The other class module defines class clsVBUndoUnits.) For more information on these class modules, see the Visio SDK on MSDN.

Private Sub mvsoDocument_ShapeAdded(ByVal vsoShape As IVShape) 

    Dim VBUndoUnit As clsVBUndoUnits 

    On Error GoTo mvsoDocument_ShapeAdded_Err 

    If Not (mvsoApplication Is Nothing) Then

        If Not msvoApplication.IsUndoingOrRedoing Then
            'Increment the count of undoable actions. 
            Debug.Print "Original Do: GetModuleVar = " & GetModuleVar 

            'Instantiate clsVBUndoUnit, a
            'class that implements Visio.IVBUndoUnit.
            Set VBUndoUnit = New clsVBUndoUnits 

            'Pass the current instance of the class 
            'of which this procedure is a member, 
            'clsParticipateInUndo, to the Undo unit. 
            VBUndoUnit.SetModelObject Me 

            'Add an Undo unit. 
            mvsoApplication.AddUndoUnit VBUndoUnit 

        End If  

     End If  

Exit Sub 


    MsgBox Err.Description 

End Sub