Application.EndUndoScope-Methode (Visio)

Beendet eine Transaktion mit einem eindeutigen Bereich oder bricht sie ab.

Syntax

Ausdruck. EndUndoScope (nScopeID, bCommit)

expression Eine Variable, die ein Application-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
nScopeID Erforderlich Long Die ID des zu schließenden Bereichs.
bCommit Erforderlich Boolean Ein Flag, das angibt, dass die während des Bereichs vorgenommenen Änderungen akzeptiert (True) oder abgebrochen (False) werden sollen.

Rückgabewert

Nichts

Bemerkungen

Wenn Sie wissen müssen, ob empfangene Ereignisse das Ergebnis eines bestimmten von Ihnen initiierten Vorgangs sind, verwenden Sie die Methoden BeginUndoScope und EndUndoScope, um den Vorgang einzuschließen. Verwenden Sie im Ereignishandler die IsInScope-Eigenschaft, um zu testen, ob die von der BeginUndoScope-Methode zurückgegebene Bereichs-ID Bestandteil des aktuellen Kontexts ist. Stellen Sie sicher, dass Sie die Bereichs-ID löschen, die Sie aus der BeginUndoScope-Eigenschaft gespeichert haben, wenn Sie das ExitScope-Ereignis mit dieser ID erhalten.

Sie müssen Aufrufe der BeginUndoScope-Methode mit Aufrufen der EndUndoScope-Methode ausgleichen. Wenn Sie die BeginUndoScope-Methode aufrufen, sollten Sie die EndUndoScope-Methode aufrufen, sobald Sie die Aktionen abgeschlossen haben, die den Bereich bilden. Obwohl Aktionen für mehrere Dokumente in einem Bereich stabil sein sollten, kann das Schließen eines Dokuments den Nebeneffekt haben, dass die Rückgängig-Informationen für den derzeit geöffneten Bereich sowie die Rückgängig- und Wiederholen-Stapel gelöscht werden. In diesem Fall werden durch die Übergabe von bCommit = False an EndUndoScope die Rückgängig-Informationen nicht wiederhergestellt.

Sie können die Methoden BeginUndoScope und EndUndoScope auch verwenden, um dem Rückgängig-Datenstrom von Microsoft Visio eine von einem Add-On definierte Aktion hinzuzufügen. Dies ist nützlich, wenn Sie in Szenarios ohne Modus arbeiten, in denen der initiierende Agent Bestandteil der Benutzeroberfläche eines Add-Ons oder einer programmgesteuerten Aktion ohne Modus ist.

Hinweis

Die meisten Visio-Aktionen sind bereits in interne Rückgängig-Bereiche eingeschlossen, sodass Add-Ons, die innerhalb der Anwendung ausgeführt werden, diese Methode nicht aufrufen müssen.

Wenn Ihre Visual Studio-Projektmappe den Verweis Microsoft.Office.Interop.Visio enthält, wird diese Methode dem folgenden Typ zugeordnet:

  • Microsoft.Office.Interop.Visio.IVApplication.EndUndoScope(int, bool)

Beispiel

Mit diesem Beispiel wird gezeigt, wie die EndUndoScope-Methode verwendet wird, um eine Transaktion zu beenden, die eine eindeutige Bereichs-ID für eine Instanz von Visio aufweist.

 
Private WithEvents vsoApplication As Visio.Application  
Private lngScopeID As Long 
     
Public Sub EndUndoScope_Example()  
 
    Dim vsoShape As Visio.Shape  
 
    'Set the module-level application variable to  
    'trap Application-level events.  
    Set vsoApplication = Visio.Application  
 
    'Begin a scope and set the module-level variable.  
    lngScopeID = vsoApplication.BeginUndoScope("Draw Shapes")  
 
    'Draw three shapes.  
    Set vsoShape = ActivePage.DrawRectangle(1, 2, 2, 1) 
  
    ActivePage.DrawOval 3, 4, 4, 3  
    ActivePage.DrawLine 4, 5, 5, 4  
 
    'Change a cell to trigger a CellChanged event.  
    vsoShape.Cells("Width").Formula = 5  
 
    'End and commit this scope.  
    vsoApplication.EndUndoScope lngScopeID, True  
 
End Sub    
 
Private Sub vsoApplication_CellChanged(ByVal Cell As IVCell)  
 
    'Check to see if this cell change is the result of something  
    'happening within the scope.  
    If vsoApplication.IsInScope(lngScopeID) Then  
        Debug.Print Cell.Name & " changed in scope "; lngScopeID  
    End If 
   
End Sub   
 
Private Sub vsoApplication_EnterScope(ByVal app As IVApplication, _  
    ByVal nScopeID As Long, _  
    ByVal bstrDescription As 
     String)  
 
    If vsoApplication.CurrentScope = lngScopeID Then  
        Debug.Print "Entering my scope " & nScopeID  
    Else  
        Debug.Print "Enter Scope " & bstrDescription & "(" & nScopeID & ")"  
    End If 
   
End Sub   
 
Private Sub vsoApplication_ExitScope(ByVal app As IVApplication, _  
    ByVal nScopeID As Long, _  
    ByVal bstrDescription As String, _  
    ByVal bErrOrCancelled As Boolean)  
 
    If vsoApplication.CurrentScope = lngScopeID Then  
        Debug.Print "Exiting my scope " & nScopeID  
    Else  
        Debug.Print "Exit Scope " & bstrDescription & "(" & nScopeID & ")"  
    End If  
  
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.