Freigeben über


Application.BeginUndoScope-Methode (Visio)

Startet eine Transaktion mit einer eindeutigen Bereichs-ID für eine Instanz von Microsoft Visio.

Syntax

Ausdruck. BeginUndoScope (bstrUndoScopeName)

expression Eine Variable, die ein Application-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
bstrUndoScopeName Erforderlich String Der Name des Bereichs, kann auf der Visio-Benutzeroberfläche angezeigt werden.

Rückgabewert

Long

Hinweise

Wenn Sie wissen müssen, ob Ereignisse, die Sie erhalten, das Ergebnis eines bestimmten Vorgangs sind, den Sie initiiert haben, verwenden Sie die Methoden BeginUndoScope und EndUndoScope , um den Vorgang zu umschließ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 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 die Microsoft.Office.Interop.Visio-Referenz enthält, wird diese Methode den folgenden Typen zugeordnet:

  • Microsoft.Office.Interop.Visio.IVApplication.BeginUndoScope(string)

Beispiel

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

 
Private WithEvents vsoApplication As Visio.Application  
Private lngScopeID As Long 
 
Public Sub BeginUndoScope_Example()  
 
    Dim vsoShape As Visio.Shape  
 
    'Set the module-level application variable to  
    'trap application-level events.  
    Set vsoApplication = Application  
 
    'Begin a scope and set the module-level scope ID variable.  
    lngScopeID = Application.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 the CellChanged event.  
    vsoShape.Cells("Width").Formula = 5  
 
    'End and commit this scope.  
    Application.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.